Frage Wo ist das Cron / Crontab-Protokoll?


Ich möchte überprüfen, ob mein Cron-Job ausgeführt wird und zu welcher Zeit. Ich glaube, es gibt ein Protokoll für meine sudo crontab -e Jobs, aber wo?

Ich suchte google und fand Empfehlungen, um nachzusehen /var/log (in dem ich nichts mit 'cron' im Namen sehe) und um die Datei zu bearbeiten /etc/syslog.conf was ich auch nicht habe.


612
2017-08-11 12:06


Ursprung




Antworten:


Bei einer Standardinstallation werden die Cron-Jobs protokolliert

/var/log/syslog

Sie können nur Cron-Jobs in diesem Logfile sehen, indem Sie laufen

 grep CRON /var/log/syslog

Wenn Sie nichts neu konfiguriert haben, werden die Einträge dort sein.


720
2017-08-12 10:58



Wenn kein MTA installiert ist, wirft Cron die Jobausgabe einfach weg. - Barry Kelly
Das Cron-Protokoll befindet sich möglicherweise in einer anderen Datei in der /var/log/ Verzeichnis. Überprüfen Sie auf cron.log oder gleichwertig. - Navigatron
das gibt mir keine Ausgabe vom Job. es gibt nur eine allgemeine Nachricht, dass der Cron verarbeitet wurde. - chovy
Bei AWS war es / var / log / cron - tsukimi
@shadi könntest du auch grep -i CRON um nach Groß- und Kleinschreibung zu suchen - nafg


Sie können eine cron.log-Datei erstellen, die nur die CRON-Einträge enthält, die in syslog angezeigt werden. Beachten Sie, dass CRON-Jobs weiterhin in Syslog angezeigt werden, wenn Sie die folgenden Anweisungen befolgen.

Öffne die Datei

/etc/rsyslog.d/50-default.conf

Suchen Sie die Zeile, die mit beginnt:

#cron.*

Kommentieren Sie diese Zeile, speichern Sie die Datei und starten Sie rsyslog neu:

sudo service rsyslog restart

Sie sollten jetzt eine Cron-Log-Datei sehen:

/var/log/cron.log

Die Cron-Aktivität wird nun in dieser Datei protokolliert (zusätzlich zu syslog).

Beachten Sie, dass in cron.log Einträge angezeigt werden, wenn cron Skripts in /etc/cron.hourly, cron.daily usw. ausgeführt hat - z. etwas wie:

Apr 12 14:17:01 cd CRON[14368]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)

Es werden jedoch keine weiteren Informationen darüber angezeigt, welche Skripts tatsächlich in /etc/cron.daily oder /etc/cron.hourly ausgeführt wurden, es sei denn, diese Skripts leiten die Ausgabe an die Datei cron.log (oder möglicherweise an eine andere Protokolldatei) weiter.

Wenn Sie überprüfen möchten, ob eine crontab ausgeführt wird und nicht in cron.log oder syslog danach suchen muss, erstellen Sie eine crontab, die 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 von dem Skript erzeugt werden, das in der angegebenen Protokolldatei ausgeführt wird, umgeleitet.


195
2018-04-13 01:36



Meiner Meinung nach ist diese Antwort in Zukunft besser. So ist Ihre Syslog-Datei klarer. - shgnInc
Um auch das Cron-Protokoll von Syslog auszuschließen, können Sie die Zeile ändern *.*;auth,authpriv.none -/var/log/syslog zu *.*;auth,authpriv.none,cron.none -/var/log/syslog. - Koen.
Auf unserem CentOS 6 ist cron. * In /etc/rsyslog.conf definiert, während ich im Ordner rsyslog.d leer bin. - Scott Chu
was ist 2>&1 stehen für ? - John Joe
@JohnJoe 2> & 1 wird verwendet, um stderr an stdout weiterzuleiten. Auf diese Weise erhalten Sie auch stderr zur Protokolldatei. - Sampo Sarrala


Manchmal kann es nützlich sein, es kontinuierlich zu überwachen, in diesem Fall:

tail -f /var/log/syslog | grep CRON

67
2018-05-14 07:34



Nun, Sie möchten wahrscheinlich verwenden -F, die der Datei über Namensänderungen hinweg folgt, so dass, wenn sie z. /var/log/syslog.1.gz, du folgst immer noch dem Strom /var/log/syslog Datei. Laut den Man-Dokumenten ist dies das Gleiche wie das Ausführen tail xxxx -f --retry - Momer


Sie können auch die Ausgabe der einzelnen Cronjobs zur besseren Lesbarkeit auf ihre eigenen Logs lenken, Sie müssen lediglich die Ausgabe des Datums irgendwo anhängen.

 0 15 * * *    /home/andrew/daily-backup.sh >> /var/log/daily-backup.log 2>&1

24
2018-04-01 15:26



true, aber wenn diese Zeile aufgrund eines Syntaxfehlers nicht ausgeführt werden kann, wird nichts in das angegebene Ausgabeprotokoll geschrieben. - Raptor
Sie können dies lösen, indem Sie 2> & 1 anhängen, nachdem die Protokolldatei angegeben wurde. Es ist auch empfehlenswert, Ihre Cronjobs zu testen, bevor Sie sie zur Crontab hinzufügen und dann für den ersten geplanten Lauf vorhanden sind, um sicherzustellen, dass die Crontab ordnungsgemäß formatiert ist. - Andrew Meyer


Dies ist eine sehr alte Frage, aber keine dieser Antworten scheint befriedigend.

Machen Sie zuerst Ihren Cron-Job jede Minute, dann führen Sie Cron als Nicht-Daemon aus (temporär, töten Sie einfach jeden Crond, der bereits gestartet wurde) mit der Testprotokollierung:

crond -nx test

Und sehen Sie das Protokoll Ihrer Programmausführung, die durch Ihr Terminal fließt.


7
2018-06-17 17:42



Läuft nicht am 14.04 - No command 'crond' found, did you mean: Command 'cron' from package 'cron' (main) - G-.


Es ist in /var/log/syslog standardmäßig.

Es kann jedoch eingerichtet werden, um ein separates cron.log zu erstellen, das nützlicher ist.

Diese Q & A beschreibt den Prozess:

16.04: Wie kann Cron Cron erstellen und in Echtzeit überwachen?

Auch in dieser Antwort ist die Anleitung zum Erstellen eines wcron Befehl, der es anzeigt, ist fast in Echtzeit. Plus, es verbindet sich mit einer anderen Antwort,

Wie ändere ich den Cron Log Level?

das zeigt, wie man den Loglevel so ändert, dass er mehr als nur den Start von Jobs enthält - Level 15 zeigt auch Fehler und Endzeit.


5
2017-10-22 06:40





Sie könnten die Ausgabe von cron in eine tmp-Datei umleiten

Sowie: 00 11 07 * * / bin / bash /home/ubuntu/befehl.sh> / tmp / ausgang 2> & 1

Fehler und normale Ausgabe, beide werden in dieselbe Datei umgeleitet


1
2018-05-07 11:27