
Information
Ich habe die folgende Crontab für den Root-Benutzer unter Debian 10.
root@debian:~# crontab -l
# crontab comments curtailed for serverfault
#
# m h dom mon dow command
30 3 * * * shutdown -r now
Wenn ich es ausführe uptime
, who -b
erhalte ich die Ergebnisse vom letzten manuellen Neustart (gestern gegen 18 Uhr).
root@debian:~# uptime
11:03:19 up 16:29, 1 user, load average: 0.00, 0.01, 0.00
root@debian:~# who -b
system boot 2020-12-26 18:34
Ich habe die Crontab gestern gegen 19 Uhr erstellt, sie war also definitiv vor der Zielzeit vorhanden.
Frage
Gibt es einen Grund, warum das nicht funktioniert hat? Kann ich das irgendwie debuggen?
Antwort1
Überprüfen Sie das Protokoll, um zu sehen, ob der Cron-Job zur angegebenen Zeit ausgeführt wurde.
Ist man bei Debian-Cron angemeldet /var/log/syslog
, wird dort ggf. ein Fehler gemeldet, ob der Cron-Job aktiviert wurde.
Wenn ja, grep cron /var/log/syslog
wurde zu dem Zeitpunkt, als Cron den Neustart durchführen sollte, irgendetwas protokolliert?
Überprüfen Sie auch, ob der Cron-Dienst ausgeführt wird. Wenn ja, systemctl status cron.service
wird angezeigt, dass der Dienst aktiv und aktiviert ist. Der Cron-Dienst muss ausgeführt werden, damit Cron-Jobs ausgeführt werden können.
Es könnte auch daran liegen, dass Cron den Befehl zum Herunterfahren nicht finden kann. Versuchen Sie es /usr/sbin/shutdown -r now
in Cron.
Für Debian 12 und neuer
Die traditionellen Logdateienwurden systemd-journald
in Debian 12 ersetzt durch, sodass Sie nicht mehr in /var/log/syslog
der Zeile using tools suchen können. Dies betrifft auch andere GNU/Linux-Distributionen. Sie können stattdessen jedoch verwenden und die Protokolle auch direkt dort filtern:grep
journalctl
journalctl -u cron