我正在尝试执行基本的关闭 crontab 以在晚上 10 点运行 MF。所以我做了以下事情:
sudo crontab -e
进入 crontab 后,我添加了以下行:
0 22 * * 1-5 shutdown now
作业似乎运行不正常,我找不到任何错误/var/log/syslog
。这里面有什么明显的错误吗?
答案1
您的问题可能是 crontab 文件中的 PATH 受到限制,并且不包括/sbin
最有可能关闭的位置。
因此,您应该使用完整路径进行关闭(您可以使用 检查sudo which shutdown
):
0 22 * * 1-5 /sbin/shutdown now
从man 5 crontab
:
特别注意,如果您想要“/usr/bin:/bin”以外的 PATH,则需要在 crontab 文件中设置它。
/sbin/shutdown
您可以执行以下操作,而不是指定:
PATH = /sbin:$PATH
0 22 * * 1-5 shutdown now
答案2
- 您可以尝试列出执行时间
cronlist
看看它是否会按您的预期运行。据我所知,该cron
作业将于周一至周五 22:00 运行;那是你要的吗? shutdown now
如果您以普通用户身份执行它会打印什么?- 打印什么
service cron status
?如果没有显示cron start/running
,您必须使用 重新启动它service cron start
。 - 机器上的时钟是否正确?它可能未配置或不同步,导致作业在完全错误的日期或时间运行。
- 您是否有任何错误消息,例如
PAM bad jump in stack
在/var/log/auth.log
?该帖子包含大量调试信息和要尝试的事情。
答案3
检查 tail -n 100 /var/log/cron
您是否尝试使用普通用户或 root 用户运行此 cron?
答案4
您无权使用 shutdown 命令。尝试执行以下命令:
sudo chmod u+s /sbin/shutdown
然后在你的 crontab 中指定关闭的完整路径
0 22 * * 1-5 /sbin/shutdown now