Cronjob funktioniert nicht / speichert nicht

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Guten Abend,

    dieses Wochenende möchte ich mich mal wieder an ein kleines Pi Projekt setzen und möchte unter anderem in regelmäßigen Abständen die Internetgeschwindigkeit messen, da ich immer mal wieder Performanceprobleme habe.

    Dafür habe ich Raspbian und speedtes-cli installiert.

    in den Crontab editor (crontab -e) habe ich folgende Zeile eingefügt und abgespeichert

    Code
    */15* * * * /usr/bin/speedtest-cli --server 30593 >> /home/pi/Desktop/speedlog.txt

    Der Cronjob soll alle 15 Minuten einen Speedtest durchführen. Hierfür soll immer der Server mit der ID 30593 genutzt werden.

    Die Werte sollen in die speedlog Textdatei auf dem Desktop gespeichert werden.

    Die Zeile hatte ich von einer Website übernommen und etwas angepasst.

    Ich kann den Cronjob mit Strg+O ohne eine Fehlermeldung abspeichern. Aber selbst wenn ich 15-30 Minuten warte, wird keine Datei auf dem Desktop erstellt.

    Wo steckt der Fehler? Ich finde ihn nicht.

  • Läuft das Script, wenn es manuell aufgerufen wird?

    Mit welchem User wurde das Script erstellt?

    Ist es nur hier ein Kopierfehler/Darstellungsfehler oder fehlt zwischen 15 und * noch ein Leerzeichen?

    Der Pi mag soweit mir bekannt diese cron syntax nicht. Es sollte 0-23/15 sein (Rest unverändert), so ist es zumindest bei mir mit einem anderen Job gewesen.

    Gruss

  • in den Crontab editor (crontab -e) habe ich folgende Zeile eingefügt und abgespeichert

    Code
    */15* * * * /usr/bin/speedtest-cli --server 30593 >> /home/pi/Desktop/speedlog.txt

    Versuch mal mit:

    Code
    */15 * * * * /usr/bin/speedtest-cli --server 30593 >> /home/pi/Desktop/speedlog.txt

    Teste mal mit tcpdump, ob eine Verbindung zum Server hergestellt wird.

    BTW: Ich habe keine gute Erfahrungen mit speedtest-cli gemacht. Vergleiche mal den DL von speedtest-cli mit dem von wget (nach /dev/null) von einem _geeigneten_ speedtest-Server.

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p3 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

    Einmal editiert, zuletzt von rpi444 (6. Februar 2021 um 09:31)

  • Läuft das Script, wenn es manuell aufgerufen wird?

    Mit welchem User wurde das Script erstellt?

    Ist es nur hier ein Kopierfehler/Darstellungsfehler oder fehlt zwischen 15 und * noch ein Leerzeichen?

    Der Pi mag soweit mir bekannt diese cron syntax nicht. Es sollte 0-23/15 sein (Rest unverändert), so ist es zumindest bei mir mit einem anderen Job gewesen.

    Gruss

    Ich habe gerade direkt euren Hinweis mit dem fehlenden Leerzeichen editiert bzw. rpi444s Code übernommen. Der Befehl funktioniert manuell.

    Erstellt hatte ich den Cronjob als Root.


    Versuch mal mit:

    Code
    */15 * * * * /usr/bin/speedtest-cli --server 30593 >> /home/pi/Desktop/speedlog.txt

    Teste mal mit tcpdump, ob eine Verbindung zum Server hergestellt wird.

    BTW: Ich habe keine gute Erfahrungen mit speedtest-cli gemacht. Vergleiche mal den DL von speedtest-cli mit dem von wget (nach /dev/null) von einem _geeigneten_ speedtest-Server.

    Danke! Jetzt wird die Datei zumindest angelegt. Allerdings wird nichts in die Datei geschrieben über den Cronjob. Führe ich den Befehl manuell aus, wird die Testdatei beschrieben.

  • sudo hat (bisher) keine Auswirkungen

    Der Tipp mit 2>&1 am Ende ist schon mal super hilfreich. 2 Fehler konnte ich finden.

    1. Die Server ID wird nach dem zweiten Befehl nicht mehr erkannt. Testweise lass ich Speedtest jetzt erst einmal einen random Testserver auswählen.

    2. Irgendwas stimmt mit dem Cronjob Timing nicht. Führe ich den Befehl händisch aus wird folgende Meldung in die Logdatei geschrieben:

    Code
    bash: */15: Datei oder Verzeichnis nicht gefunden

    Das scheint nicht die richtige Syntax zu sein für Raspbian.

  • Das scheint nicht die richtige Syntax zu sein für Raspbian

    Syntaktisch ist deine Zeile korrekt, wenn du alle 15 Minuten das Kommando ausführen willst.

    Führe ich den Befehl händisch aus wird folgende Meldung in die Logdatei geschrieben:

    Die crontab-Zeile ist eine crontab-Zeile und kein "Befehl" für die Shell.

    */15 * * * *  ist die crontab-Angabe zur Zeitsteuerung (syntax <man 5 crontab> und

    /usr/bin/speedtest-cli --server 30593 >> /home/pi/Desktop/speedlog.txt 2>&1 ist das Kommando/der Befehl.

    //Nachtrag

    Bist du sicher, dass der Befehl in der Shell funktioniert?

    Code
    $ /usr/bin/speedtest-cli --server 30593
    ..
    ..
    Retrieving speedtest.net server list...
    ERROR: No matched servers: 30593

    Wenn du nichts zu sagen hast, sag einfach nichts.

    Einmal editiert, zuletzt von llutz (6. Februar 2021 um 12:55)

  • Huch, ich dachte die Crontab Zeile lässt sich auch händisch ausführen.

    Nun läuft es. Der Fehler ist mir etwas peinlich. Das Speedtest-CLI Skript lag in einem anderen Pfad. :stumm:

    Warum die gewünschte Server ID nach dem zweiten Test nicht mehr verfügbar ist, werde ich selbst erörtern. Zumindest läuft der Cronjob jetzt. Vielen Dank für eure Hilfe!

  • Ein crontab Eintrag muss mit einem (nicht sichtbaren) newline Zeichen abgeschlossen sein, also mit einem RETURN am Keyboard, womit der Cursor an den Beginn der nächsten Zeile rückt. Dort kann auch ein # eingegeben werden, damit sichtbar wird, dass die Crontab Zeile mit "\n" richtig abgeschlossen wurde.

    Servus !

    RTFM = Read The Factory Manual, oder so

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!