Dies kann ein verwirrendes Thema sein, da es unterschiedliche Implementierungen von cron gibt. Es gab auch einige Fehler, die diese Funktion beschädigt haben, und einige Anwendungsfälle, in denen dies einfach nicht funktioniert, insbesondere wenn Sie einen Shutdown / Boot-Vorgang oder einen Neustart durchführen.
Bugs
Datenpunkt Nr. 1
Ein solcher Fehler in Debian wird hier behandelt: cron: @reboot-Jobs werden nicht ausgeführt . Dies scheint auch in Ubuntu angekommen zu sein, was ich nicht direkt bestätigen kann.
Datenpunkt Nr. 2
Beweise für den Fehler in Ubuntu scheinen hier in diesem SO- Fragen- und Antworten-Fragebogen mit dem Titel " @reboot cronjob not executing" bestätigt zu sein .
Auszug
Kommentar # 1: .... 3) Ihre Version von Crond unterstützt @reboot möglicherweise nicht. Verwenden Sie Vix's Crond? ... zeige Ergebnisse von crontab -l -u user
Kommentar Nr. 2: ... Es könnte eine gute Idee sein, es als Init-Skript einzurichten, anstatt sich auf eine bestimmte Version von crons @reboot zu verlassen.
Kommentar # 3: ... @MarkRoberts hat den Neustart entfernt und das 1 * * * * in * / 1 * * * * geändert, Problem ist gelöst! Wohin sende ich das Wiederholungszeichen? Danke!
Die akzeptierte Antwort in diesem Q & A hatte auch diesen Kommentar:
Mir scheint, Lubuntu unterstützt die @ Reboot Cron-Syntax nicht.
Zusätzliche Beweise
Datenpunkt Nr. 3
Als zusätzlichen Beweis gab es diesen Thread, dass jemand genau dasselbe versuchte und frustriert darüber wurde, dass es nicht funktionierte. Es trägt den Titel: Thread: Cron - @reboot-Jobs funktionieren nicht .
Auszug
Betreff: Cron - @reboot Jobs funktionieren nicht
Zitat Zitat von ceallred Beitrag anzeigen Dies bringt mich um ... Versuchte das Wrapper-Skript. Beim manuellen Ausführen wird die Protokolldatei erstellt. Ein Neustart des Jobs wird nicht ausgeführt oder es wird keine Protokolldatei erstellt.
Syslog zeigt, dass CRON den Job ausgeführt hat ... aber auch hier keine Ausgabe und der Prozess läuft nicht. Jul 15 20:07:45 RavenWing cron [1026]: (CRON) INFO (Ausführen von @reboot-Jobs) Jul 15 20:07:45 RavenWing CRON [1053]: (ceallred) CMD (/ home / ceallred / Scripts / run_spideroak. sh> /home/ceallred/Scripts/SpiderOak.log 2> & 1 &)
Es scheint, als würde cron den Befehl @reboot nicht mögen ... Irgendwelche anderen Ideen?
Okay ... Teilweise gelöst. Ich werde diesen als gelöst markieren und einen neuen Thread mit der neuen Ausgabe beginnen .....
Ich denke, die Antwort war, dass mein verschlüsseltes Home-Verzeichnis nicht gemountet wurde, als CRON versuchte, das Skript auszuführen (gespeichert in / home / username / scripts). Nach / usr / scripts verschoben und der Job wird wie erwartet ausgeführt.
Jetzt scheint es also ein Spideroak-Problem zu sein. Der Vorgang wird gestartet, aber bis der Startvorgang abgeschlossen ist, ist er beendet. Ich vermute einen Absturz aus irgendeinem Grund .... Neuer Thread, um danach zu fragen.
Danke für all die Hilfe!
Sobald der oben genannte Benutzer sein Problem herausgefunden hatte, war er in der Lage, @reboot
die Crontab-Eingabe eines Benutzers zu bearbeiten.
Ich bin nicht ganz sicher, welche Version von cron unter Ubuntu verwendet wird, aber dies scheint darauf hinzudeuten, dass der Benutzer es auch verwenden kann @reboot
oder dass der Fehler in späteren Versionen von cron irgendwann behoben wurde.
Datenpunkt Nr. 4
Ich habe auf CentOS 6 folgendes getestet und es hat funktioniert.
Beispiel
$ crontab -l
@reboot echo "hi" > /home/sam/reboot.txt 2>&1
Ich habe dann das System neu gestartet.
$ sudo reboot
Nach dem Neustart.
$ cat reboot.txt
hi
Nehmen Sie sich Zeit
- Diese Funktion scheint sowohl für System- als auch für Benutzer-Crontab-Einträge unterstützt zu werden.
- Sie müssen sicherstellen, dass es in Ihrer speziellen Distribution und / oder Version des Cron-Pakets unterstützt wird / funktioniert.
Um mehr darüber zu erfahren, wie der eigentliche Mechanismus funktioniert, @reboot
bin ich auf diesen Blog-Beitrag gestoßen, in dem es um die Innereien geht. Es trägt den Titel: @reboot - erklärt einfache Cron-Magie .
Crond debuggen
Sie können die Ausführlichkeit von crond
erhöhen, indem Sie der Konfigurationsdatei unter RHEL / CentOS / Fedora-basierten Distributionen Folgendes hinzufügen.
$ more crond
# Settings for the CRON daemon.
# CRONDARGS= : any extra command-line startup arguments for crond
CRONDARGS="-L 2"
Die gültigen Ebenen sind 0, 1 oder 2. Um diese Datei auf die Standardprotokollierungsstufe zurückzusetzen, entfernen "-L 2"
Sie einfach die, wenn Sie mit dem Debuggen der Situation fertig sind.