Cron ist ein Dienst für Linux-Server, der geplante Befehle automatisch ausführt. Ein Cron-Job kann eine Reihe von Shell-Befehlen, Skripten oder anderen Programmen sein. Cron-Tasks oder -Jobs können eine Vielzahl von Funktionen ausführen und nach dem Ausführen eine E-Mail-Nachricht senden, um Sie über den Abschluss oder Fehler zu informieren. Wenn Sie eine Fehlermeldung erhalten, gibt es viele Möglichkeiten, die Cron-Aufgabe zu beheben. Verwenden Sie diesen Artikel als Hilfestellung bei der Fehlerbehebung oder als Tutorial zu den Grundlagen von Cron-Jobs. Wenn Sie mehr über das Erstellen eines Cron-Jobs erfahren möchten, sehen Sie sich unsere Knowledge Base-Tutorials zu diesem Thema an.
Überprüfen der Konfigurationen mit Crontab
Von der Befehlszeile aus können Sie die geplanten Cron-Jobs überprüfen, indem Sie die crontab für den Benutzer auflisten. Dieser Befehl gibt den Inhalt der Crontab des Benutzers an das Terminal aus.
Als Benutzer können Sie Folgendes ausführen:crontab -l
Als Root können Sie die Crontab eines jeden Benutzers sehen, indem Sie den Benutzernamen angeben.crontab -l -u username
Detaillierte Informationen zum Formatieren der Cronjobs finden Sie in /etc/crontab Datei. Unten ist das Beispiel in dieser Datei. Jeder Stern kann durch eine Zahl oder durch das entsprechende Feld ersetzt werden. Oder Sie können das Sternchen an Ort und Stelle lassen, um alle möglichen Zahlen für diese Position darzustellen. Wenn beispielsweise nur Sternchen übrig bleiben, bedeutet dies, dass der Cron-Job immer jede Minute ausgeführt wird.
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
Ändern der E-Mail-Adresse eines Cron
Nach dem Start sendet ein Cron eine Benachrichtigung an eine E-Mail-Adresse, die in der MAILTO-Zeile der Crontab festgelegt ist.
MAILTO="[email protected]"
Um die Crontab zu bearbeiten, können Sie die folgenden Befehle als Benutzer ausführen:
crontab -e
Oder wenn Sie als Root angemeldet sind, können Sie den Benutzernamen für jeden Ihrer Benutzer eingeben, um eine geplante Aufgabe zu sehen, die sie erstellt haben.
crontab -e -u username
Diese öffnen die Crontab des Benutzers im Standardeditor. Typischerweise das vim oder Nano Befehl öffnet die Datei. Beachten Sie, dass dies dem Öffnen einer anderen Textdatei ähnelt, die Sie vor dem Schließen speichern.
Die MAILTO-Zeile gibt an, wohin der Ausführungsstatus eines Cron gesendet werden soll. Die Absenderadresse ist normalerweise der Benutzername des Crontask-Erstellers zusammen mit dem Hostnamen des Servers. Die Absenderadresse einer E-Mail würde also dieser Syntax folgen:[email protected]. Wenn Sie eine E-Mail nicht sofort sehen, ist es vielleicht eine gute Idee, Ihr Spam-Postfach zu überprüfen.
Silent Crons
Manchmal sind Cron-Jobs so konfiguriert, dass sie entweder keine Ausgabe erzeugen oder ihre Ausgabe stumm schalten, selbst wenn sie mit einer MAILTO-Adresse eingestellt sind. Wenn Sie einen Cron-Job mit einem der folgenden am Ende aufgelistet sehen, ist dies ein Zeichen dafür, dass die Cron-Ausgabe stummgeschaltet wurde. Diese senden alle Ausgaben an das Null-Gerät (das schwarze Loch auf einem Linux-Server). In solchen Fällen müssen Sie die Zeile aus dem Cron-Job-Skript entfernen, um eine Ausgabe zu generieren.
&> /dev/null
2>&1 /dev/null
Einige Cron-Jobs sind vollständig deaktiviert. Diese haben ein „#“ vor dem Befehl, was bei der Ausführung zu ignorierten Zeilen führt. Entfernen Sie das „#“, um den Cron-Job erneut zu aktivieren.
Überprüfen des Crond-Dienstes
Nachdem Sie die korrekten Einstellungen bestätigt haben, ist es an der Zeit zu überprüfen, ob das Cron-System aktiviert ist und ausgeführt wird. Die drei folgenden Befehle können jeweils verwendet werden, um zu überprüfen, ob crond (der Cron-Dienst) läuft.
/etc/init.d/crond status
service crond status
systemctl status crond
Wenn Sie nach dem Ausführen eines der oben genannten Befehle feststellen, dass der Crond-Dienst nicht ausgeführt wird, können Sie ihn mit einem der folgenden Schritte starten.
/etc/init.d/crond start
service crond start
systemctl start crond
/var/log/cron
Sobald Sie wissen, dass Cron aktiviert und nicht stummgeschaltet ist und Crond ausgeführt wird, ist es an der Zeit, das Cron-Protokoll zu überprüfen, das sich im Pfad /var/log/cron befindet .
cat /var/log/cron
Beispielausgabe:
Oct 2 23:45:01 host CROND[3957]: (root) CMD (/usr/local/lp/apps/kernelupdate/lp-kernelupdate.pl > /dev/null 2>&1)
Im Protokoll sehen Sie, ob, wann und welcher Benutzer den Cron ausgeführt hat. Wenn initiiert, sehen Sie das Datum und die Uhrzeit der Ausführung, gefolgt von Klammern der individuellen Cron-Nummer. Dieser Zeitstempel bestätigt nicht, dass das Skript normal oder überhaupt ausgeführt wurde, er zeigt nur an, wann das Cron-System die Aufgabe zuletzt ausgeführt hat. Darüber hinaus müssen Sie möglicherweise das Cron-Skript selbst oder Konfigurationen auf Anwendungsebene und ihre jeweiligen Protokolle untersuchen, um sicherzustellen, dass der Code korrekt ausgeführt wird.
Oct 2 23:50:01 host CROND[4143]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Oct 2 23:50:01 host CROND[4144]: (root) CMD (/usr/local/maldetect/maldet --mkpubpaths >> /dev/null 2>&1)
Andere Cron-Dienste
Dieser Artikel ist lediglich ein Überblick über den wichtigsten Crond-Dienst, da es viele andere Cron-Tasks-Dienste gibt. Das Anacron-System ist ein häufig verwendeter Cron-Dienst, der tägliche oder stündliche Jobs konfiguriert und sogar so eingestellt werden kann, dass er beim Neustart ausgeführt wird. Die Protokolle für diese Art von Aufgaben befinden sich in /var/log/cron , und werden nicht von crond ausgeführt.
Andere geplante Aufgaben, obwohl auch als Cron-Jobs bezeichnet, werden nicht vom Crond-System ausgeführt. Diese Cron-Jobs werden oft innerhalb des Codes oder der Konfiguration einer Website konfiguriert. Um festzustellen, ob es ausgeführt wird, müssen Sie andere Konfigurationen und Protokolle untersuchen, mit denen das Cron-Skript interagiert.
Wie bei allen Cron-Diensten können automatisierte Jobs manipuliert werden, um zahlreiche tägliche Aufgaben auszuführen, sodass Sie dies nicht tun müssen. Cron-Tasks können gelegentlich schief gehen, auch ohne sie oder Jahre zu ändern, aber zu wissen, wo man suchen muss, ist die halbe Miete bei der Fehlerbehebung eines Cron-Jobs.