信息
我在 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