You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Daemon Cron失效求助:添加定时关机命令后系统未执行

排查cron定时关机任务未生效的步骤

别着急,咱们一步步来找出问题所在:

1. 先确认cron服务是否在运行

cron服务要是没启动,任务肯定不会执行。打开终端输入:

systemctl status cron

(如果是RHEL/CentOS系列,服务名是crond,命令改成systemctl status crond)

如果输出里没显示active (running),那就先启动服务并设置开机自启:

# Debian/Ubuntu
systemctl start cron
systemctl enable cron

# RHEL/CentOS
systemctl start crond
systemctl enable crond

2. 检查/etc/crontab的语法与命令路径

你写的30 16 * * 1 root poweroff格式是对的(系统级crontab格式:分 时 日 月 周 用户 命令),但有个常见坑:cron的环境PATH很有限,可能找不到poweroff命令。

先查poweroff的绝对路径:

which poweroff

一般会输出/sbin/poweroff,把你的任务改成绝对路径试试:

30 16 * * 1 root /sbin/poweroff

另外,注意不要用制表符和空格混排,保持字段间用单个空格分隔就好。

3. 查看cron日志找线索

cron会把执行记录写到日志里,这是排查的关键。查看日志命令:

# Debian/Ubuntu
grep cron /var/log/syslog

# RHEL/CentOS
tail -f /var/log/cron
  • 如果看到类似(root) CMD (/sbin/poweroff)的条目,说明cron已经执行了命令,但关机没生效,可能是权限或命令本身的问题(比如root权限是否正常,或者系统有其他阻止关机的进程)。
  • 如果完全找不到这个任务的记录,说明cron没读取到你的任务,可能是文件格式错了,或者需要重启cron服务试试:systemctl restart cron。

4. 验证系统时间与任务触发条件

  • 用date命令确认系统时间和时区是否正确,别以为是周一16:30,结果系统时区是UTC,实际时间差了好几个小时。
  • 任务里的1代表周一,你是不是在周一测试的?如果是其他日期,任务当然不会触发。可以临时改个测试任务,比如1分钟后执行:
* * * * * root echo "cron test success" >> /tmp/cron_test.log

等1分钟后看/tmp/cron_test.log是否生成,内容是否正确,快速验证cron是否能正常执行任务。

5. 检查cron限制文件

虽然root一般不受限制,但还是可以确认一下:

  • 如果/etc/cron.allow存在,root必须在这个文件里才能执行cron任务。
  • 如果/etc/cron.deny存在,root不能在这个文件里。
    这两个文件默认一般不存在,要是有的话检查一下内容就行。

内容的提问来源于stack exchange,提问作者Joan Jara Bosch

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:19:52