Ich ziehe es vor, geplante Aufgaben in / etc / crontab abzulegen, damit ich auf einen Blick sehen kann, was für eine Ausführung geplant ist, unabhängig davon, unter welchem Benutzer die Aufgabe ausgeführt wird.
Das einzige Problem ist, dass das Format im Gegensatz zu crontab -e beim Speichern nicht validiert wird, sodass ein streunendes Zeichen den gesamten Cron stillschweigend unterbrechen kann.
Gibt es eine Möglichkeit, das Format / etc / crontab vor / nach dem Speichern zu validieren?
Antworten:
Die einzige zuverlässige Möglichkeit, die ich gefunden habe, besteht darin, das Protokoll zu überprüfen.
cron
prüft/etc/crontab
jede Minute und protokolliert eine Meldung, die angibt, dass es neu geladen wurde oder dass es einen Fehler gefunden hat.Führen Sie nach dem Bearbeiten Folgendes aus:
Oder, um nicht eine volle Minute zu warten, sondern nur bis zur nächsten Minute + 5 Sekunden:
Beispielausgabe mit einem Fehler:
Gute Leistung:
Das ist auf Debian 8. Auf anderen Systemen loggt sich cron möglicherweise in eine andere Datei.
(Ich dachte, ich könnte es vermeiden, mit systemd's nach der richtigen Protokolldatei zu suchen
journalctl -u cron
, aber das hat mir diese Protokolleinträge nicht gezeigt und scheint aus irgendeinem Grund vor 2 Tagen die Protokollierung von Cron-Ereignissen eingestellt zu haben.)quelle
Eine andere neuere Lösung ist das Python-Skript chkcrontab
quelle
Böse coole Shell-Skripte haben ein Shell-Skript, das Crontab-Dateien validiert.
Das Zip-Archiv mit dem Skript erhalten Sie hier
Das Skript heißt verifycron
quelle
Ich fand diese coole Lösung hier: https://crontab.guru
Es validiert nicht nur die Crontab, sondern teilt Ihnen ausdrücklich mit, was und wann die Crontab ausgeführt wird, und zeigt auf, wo Fehler auftreten.
quelle
Auf Ubuntu kann ich anscheinend einfach ausführen:
HINWEIS: Dies hat den Nebeneffekt, dass dieser Cronjob gestartet wird (danke @NZD)
Wenn die Datei ungültig ist, werde ich einen Fehler wie:
quelle
* 4/0 * * /bin/myscript.sh
- das4/0
ist ungültig. aber nicht von dieser Methode gefangen0
verboten? unix.stackexchange.com/questions/32027/…