把任务写进 /etc/cron.d 下的独立文件 crontab -l 里看不到 到点也没有任何执行 系统日志里一条相关记录都找不到 排查了很久才发现文件被跳过。第一次遇到会往复杂处想,其实漏掉的多是个小前提。
chmod 644 /etc/cron.d/nightly chown root:root /etc/cron.d/nightly cat /etc/cron.d/nightly # 分 时 日 月 周 用户 命令 0 3 * * * root /bin/bash /opt/jobs/nightly.sh
cron.d 的文件格式比 crontab 多一列运行用户 少写这一列整行会被忽略 文件权限不是 644 或者文件名里带点 同样会被悄悄跳过 而且根本不会给出任何提示。这一点先确认清楚,后面就不用反复试。
「cron.d 文件不生效」这个问题文档写得含糊,实际行为以当前版本为准,别照旧版本的结论套。把这次用到的命令存进笔记,比记住结论有用,换个环境还能照着走。
改完隔一天再看一次,当场正常不代表能稳住。
具体做法是,六个字段里补上运行用户 紧跟在时间表达式后面;文件权限改成 644 属主设为 root 权限不对整份会被跳过;文件名不要带点 改完碰一下修改时间让 cron 重新读取。
改完照着核一遍,系统日志里出现该文件的执行记录 任务按设定时间正常跑完。
