it-swarm.com.de

Wo ist das cron / crontab-Protokoll?

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 -e Jobs, aber wo?

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

735
Scott Szretter

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.

869

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 den Zeitpunkt angezeigt werden, zu dem cron Skripte in /etc/cron.hourly, cron.daily usw. ausführte - z. so etwas wie:

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.

229
user12345

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

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

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
32
Andrew Meyer

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

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 kann ich dafür sorgen, dass cron cron.log erstellt und in Echtzeit überwacht?

In dieser Antwort finden Sie auch die Anweisungen zum Erstellen eines wcron -Befehls, 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.

7
SDsolar

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 alle Cronds, die möglicherweise bereits gestartet wurden), indem Sie die Testprotokollierung durchführen:

crond -nx test

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

7
Tristan Maat

Wenn Sie systemd auf Ihrem System installiert haben, können Sie das Cron-Job-Protokoll mit dem Befehl journalctl anzeigen.

Zum Beispiel auf meinem Ubuntu 17.10:

journalctl -u cron.service
6
an9wer

Fedora 29 und RHEL 7

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

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

2
Himanshu

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

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 ist immer gut, einen Protokollierungsmechanismus zu haben. Sie können ELK schnell für Ihre Server einrichten. Sie können auch mit logz experimentieren.

1
zero