
資訊
我在 Debian 10 上為 root 使用者提供了以下 crontab。
root@debian:~# crontab -l
# crontab comments curtailed for serverfault
#
# m h dom mon dow command
30 3 * * * shutdown -r now
如果我運行uptime
並who -b
獲得上次手動重啟的結果(昨天下午 6 點左右)。
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
我昨天晚上 7 點左右創建了 crontab,所以它肯定是在目標時間之前就位的。
問題
這可能行不通有什麼原因嗎?我可以以任何方式調試這個嗎?
答案1
檢查日誌以查看 cron 作業是否在指定時間執行。
在 Debian 上 cron 已登錄/var/log/syslog
,查看是否有報告錯誤(如果 cron 作業已啟動)。
如果你這樣做的話,grep cron /var/log/syslog
在 cron 應該重新啟動時是否記錄了任何內容?
另請檢查 cron 服務是否正在運行,如果運行,則systemctl status cron.service
表示服務處於活動狀態並已啟用。 Cron 服務需要運行才能執行 cron 作業。
也可能是 cron 無法找到關閉指令的問題,請嘗試/usr/sbin/shutdown -r now
在 cron 中使用。
對於 Debian 12 及更高版本
傳統的日誌文件systemd-journald
在 Debian 12 中已被替換,因此您無法再/var/log/syslog
使用工具行進行搜尋。grep
這也會影響其他 GNU/Linux 發行版。但您可以journalctl
改為使用並直接在那裡過濾日誌:
journalctl -u cron