Ich möchte überprüfen, ob mein Cron-Job ausgeführt wird und zu welchem Zeitpunkt. Ich glaube, es gibt ein Protokoll für meine sudo crontab -e
-Jobs, aber wo?
Ich habe Google durchsucht und Empfehlungen gefunden, in /var/log
zu suchen (wo ich nichts mit 'cron' im Namen sehe) und die Datei /etc/syslog.conf
zu bearbeiten, die ich auch nicht habe.
Bei einer Standardinstallation werden die Cron-Jobs in
/var/log/syslog
Sie können nur Cron-Jobs in dieser Logdatei sehen, indem Sie
grep CRON /var/log/syslog
Wenn Sie nichts umkonfiguriert haben, werden die Einträge dort zu finden sein.
Sie können eine Datei cron.log erstellen, die nur die CRON-Einträge enthält, die im Syslog angezeigt werden. Beachten Sie, dass CRON-Aufträge weiterhin in syslog erscheinen, wenn Sie die folgenden Anweisungen befolgen.
Öffnen Sie die Datei
/etc/rsyslog.d/50-default.conf
Suchen Sie die Zeile, die mit beginnt:
#cron.*
kommentieren Sie diese Zeile aus, speichern Sie die Datei und starten Sie rsyslog neu:
sudo service rsyslog restart
Sie sollten nun eine Cron-Protokolldatei sehen:
/var/log/cron.log
Die Cron-Aktivitäten werden nun in dieser Datei protokolliert (zusätzlich zum Syslog).
Beachten Sie, dass Sie in cron.log Einträge sehen werden, wenn cron Skripte in /etc/cron.hourly, cron.daily, etc. ausgeführt hat. - z.B. so etwas wie:
Apr 12 14:17:01 cd CRON[14368]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
Sie werden jedoch keine weiteren Informationen darüber sehen, welche Skripte tatsächlich in /etc/cron.daily oder /etc/cron.hourly ausgeführt wurden, es sei denn, diese Skripte geben direkt in das cron.log (oder vielleicht in eine andere Protokolldatei) aus.
Wenn Sie überprüfen wollen, ob ein Crontab läuft, ohne in cron.log oder syslog danach suchen zu müssen, erstellen Sie einen Crontab, der die Ausgabe in eine Protokolldatei Ihrer Wahl umleitet - etwa so:
01 14 * * * /home/joe/myscript >> /home/log/myscript.log 2>&1
Dadurch werden alle Standardausgaben und Fehler, die durch das ausgeführte Skript erzeugt werden, in die angegebene Protokolldatei umgeleitet.
In diesem Fall kann es sinnvoll sein, sie kontinuierlich zu überwachen:
tail -f /var/log/syslog | grep CRON
Sie können auch die Ausgabe der einzelnen Cronjobs zur besseren Lesbarkeit in ihre eigenen Protokolle leiten, Sie müssen nur die Ausgabe des Datums irgendwo anhängen.
0 15 * * * /home/andrew/daily-backup.sh >> /var/log/daily-backup.log 2>&1
Dies ist eine sehr alte Frage, aber keine dieser Antworten scheint zufriedenstellend zu sein.
Zuerst lassen Sie Ihren Cron-Job jede Minute laufen, dann lassen Sie Cron als Nicht-Daemon laufen (vorübergehend, töten Sie einfach jeden Crond, der vielleicht schon begonnen hat) mit Testprotokollierung:
crond -nx test
Und sehen Sie das Protokoll Ihrer Programmausführung durch Ihr Terminal fließen.
Er befindet sich standardmäßig in /var/log/syslog
.
Es kann aber so eingerichtet werden, dass es eine separate cron.log erzeugt, was nützlicher ist.
Dieses Q&A beschreibt den Prozess:
In dieser Antwort ist auch die Anweisung enthalten, einen `wcron'-Befehl zu erstellen, der ihn nahezu in Echtzeit anzeigt. Außerdem enthält er einen Link zu einer anderen Antwort,
https://askubuntu.com/questions/949996/how-to-change-cron-log-level/
die zeigt, wie die Protokollebene so geändert werden kann, dass sie mehr als nur den Beginn von Jobs umfasst - auf Ebene 15 werden auch Fehler und die Endzeit angezeigt.
journalctl -t CROND
Aus dem journalctl
-Handbuch:
-t, --identifier=SYSLOG_IDENTIFIER|PATTERN
Show messages for the specified syslog identifier SYSLOG_IDENTIFIER, or for any of the messages with a "SYSLOG_IDENTIFIER" matched by PATTERN.
This parameter can be specified multiple times.
Wie bereits erwähnt, werden Cron-Jobs in /var/log/syslog
protokolliert.
Sie können das Syslog über die Pipeline an grep übergeben und die CRON-Protokolle herausfiltern, so wie hier
less /var/log/syslog | grep CRON
Sie können Ihre crontab-Protokolle wie folgt durchsuchen
less /var/log/syslog | grep CRON | grep <search-keyword-comes-here>
Sie können Ihre in gz-Dateien gespeicherten crontab-History-Logs durchsuchen, etwa so
less /var/log/syslog.2.gz | grep CRON | grep <search-keyword-comes-here>
Es wird immer für gut befunden, einen Logging-Mechanismus zu haben, Sie können schnell [ELK][1] für Ihre Server einrichten, Sie können auch mit [logz][2] experimentieren.