Wo ist das cron / crontab-Protokoll?

753

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

Ich suchte bei Google und fand Empfehlungen, um nachzuschauen /var/log(in denen ich nichts mit 'cron' im Namen sehe) und die Datei zu bearbeiten, /etc/syslog.confdie ich auch nicht habe.

Scott Szretter
quelle

Antworten:

895

Bei einer Standardinstallation werden die Cron-Jobs protokolliert

/var/log/syslog

Sie können nur Cron-Jobs in dieser Protokolldatei anzeigen, indem Sie ausführen

 grep CRON /var/log/syslog

Wenn Sie nichts neu konfiguriert haben, befinden sich die Einträge dort.

Richard Holloway
quelle
46
Wenn kein MTA installiert ist, wirft cron die Jobausgabe einfach weg.
Barry Kelly
11
Das Cron-Protokoll befindet sich möglicherweise in einer anderen Datei im /var/log/Verzeichnis. Suchen Sie nach cron.log oder einer entsprechenden Datei.
Navigatron
4
Das gibt mir keine Ausgabe aus dem Job. Es wird lediglich eine allgemeine Meldung angezeigt, dass der Cron verarbeitet wurde.
Chovy
2
auf AWS war es / var / log / cron
tsukimi
5
@shadi Sie könnten auch grep -i CRONnach Groß- und Kleinschreibung suchen
nafg
236

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 im Syslog angezeigt werden, wenn Sie die folgenden Anweisungen befolgen.

Öffne die Datei

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

Suchen Sie die Zeile, die beginnt mit:

#cron.*

Kommentiere diese Zeile aus, speichere die Datei und starte rsyslog neu:

sudo service rsyslog restart

Sie sollten jetzt eine Cron-Protokolldatei hier sehen:

/var/log/cron.log

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

Beachten Sie, dass in cron.log Einträge für die Ausführung von Skripten durch cron in /etc/cron.hourly, cron.daily usw. angezeigt werden - z.

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

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

Wenn Sie überprüfen möchten, ob eine crontab ausgeführt wird und nicht in cron.log oder syslog danach suchen müssen, erstellen Sie eine crontab, die die Ausgabe in eine Protokolldatei Ihrer Wahl umleitet.

01 14 * * * /home/joe/myscript >> /home/log/myscript.log 2>&1

Dadurch werden alle Standardausgaben und -fehler umgeleitet, die möglicherweise von dem Skript erzeugt werden, das in der angegebenen Protokolldatei ausgeführt wird.

user12345
quelle
1
Nach meiner Meinung ist diese Antwort in Zukunft besser. So wird Ihre Syslog-Datei übersichtlicher.
ShgnInc
9
Um auch das Cron-Protokoll von Syslog auszuschließen, können Sie die Zeile *.*;auth,authpriv.none -/var/log/syslogin ändern *.*;auth,authpriv.none,cron.none -/var/log/syslog.
Koen.
Auf unserem CentOS 6 ist cron. * In /etc/rsyslog.conf definiert, wohingegen ich im Ordner rsyslog.d leer bin.
Scott Chu
Wofür ist 2>&1Stand?
John Joe
2
@JohnJoe 2> & 1 wird verwendet, um stderr an stdout weiterzuleiten. Auf diese Weise erhalten Sie auch stderr für die Protokolldatei.
Sampo Sarrala
79

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

tail -f /var/log/syslog | grep CRON
KennyCason
quelle
10
Nun, Sie möchten wahrscheinlich verwenden -F, dass die Datei über Namensänderungen hinweg verfolgt wird, sodass Sie, wenn sie abgeschnitten / verschoben wird, z. B. /var/log/syslog.1.gzimmer noch der aktuellen /var/log/syslogDatei folgen . tail xxxx -f --retry
Laut Angaben
37

Sie können die Ausgabe der einzelnen Cronjobs auch zur besseren Lesbarkeit in ihre eigenen Protokolle lenken. Sie müssen lediglich die Ausgabe des Datums an eine beliebige Stelle anhängen.

 0 15 * * *    /home/andrew/daily-backup.sh >> /var/log/daily-backup.log 2>&1
Andrew Meyer
quelle
4
true, aber wenn diese Zeile aufgrund eines Syntaxfehlers nicht ausgeführt werden kann, wird nichts in das angegebene Ausgabeprotokoll geschrieben.
Raptor
11
Sie können dies beheben, 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. Anschließend sollten Sie bei der ersten geplanten Ausführung anwesend sein, um sicherzustellen, dass die Crontab ordnungsgemäß formatiert ist.
Andrew Meyer
10

Wenn Sie systemdauf Ihrem System installiert haben , können Sie mit dem journalctlBefehl das Cron-Job-Protokoll anzeigen .

Zum Beispiel auf meinem Ubuntu 17.10:

journalctl -u cron.service
an9wer
quelle
9

Dies ist eine sehr alte Frage, aber keine dieser Antworten scheint zufriedenstellend zu sein.

Lassen Sie Ihren Cron-Job zuerst jede Minute laufen, und führen Sie dann Cron als Nicht-Daemon aus (töten Sie vorübergehend nur einen eventuell bereits gestarteten Cron), indem Sie die Testprotokollierung durchführen:

crond -nx test

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

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

Es ist /var/log/syslogstandardmäßig aktiviert.

Es kann jedoch so eingerichtet werden, dass ein separates cron.log erstellt wird, was nützlicher ist.

Diese Frage & Antwort beschreibt den Prozess:

16.04: Wie erstelle ich cron.log und überwache es in Echtzeit?

In dieser Antwort finden Sie auch die Anweisungen zum Erstellen eines wcronBefehls, der nahezu in Echtzeit angezeigt wird. Außerdem verweist es auf eine andere Antwort,

Wie ändere ich den Cron Log Level?

Hier sehen Sie, wie Sie die Protokollebene so ändern können, dass sie mehr als nur den Start von Jobs enthält. In Ebene 15 werden auch Fehler und die Endzeit angezeigt.

SDsolar
quelle
5

Fedoar 29 und RHEL 7

journalctl -t CROND

Aus dem journalctlHandbuch:

   -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.
HarlemSquirrel
quelle
3

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

Zum Beispiel: 00 11 07 * * / bin / bash /home/ubuntu/command.sh> / tmp / output 2> & 1

Fehler und normale Ausgabe, beide werden in dieselbe Datei umgeleitet

Himanshu
quelle
2

Wie bereits erwähnt, werden Cron-Jobs protokolliert /var/log/syslog

Sie können das Syslog so weiterleiten, dass es die CRON-Protokolle durchsucht und herausfiltert

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-Verlaufsprotokolle wie folgt durchsuchen

less /var/log/syslog.2.gz | grep CRON | grep <search-keyword-comes-here>

Es wird immer als gut angesehen, über einen Protokollierungsmechanismus zu verfügen. Sie können ELK schnell für Ihre Server einrichten und mit logz experimentieren .

Null
quelle