我更喜欢将计划任务放在 /etc/crontab 中,这样无论任务以哪个用户身份运行,我都可以一目了然地看到计划运行的内容。
唯一的问题是,与 crontab -e 不同,格式在保存时未得到验证——因此一个流浪字符可以悄悄地破坏整个 cron。
有没有办法在保存之前/之后验证 /etc/crontab 格式?
miv*_*ivk 33
我找到的唯一可靠的方法是检查日志。
cron/etc/crontab每分钟检查一次,并记录一条消息,表明它已重新加载它,或者它发现了错误。
所以在编辑之后,运行这个:
sleep 60; grep crontab /var/log/syslog | tail
Run Code Online (Sandbox Code Playgroud)
或者,不要等待整整一分钟,而是只等待下一分钟 + 5 秒:
sleep $(( 60 - $(date +%S) + 5 )) && grep cron /var/log/syslog | tail
Run Code Online (Sandbox Code Playgroud)
带有错误的示例输出:
Jan 9 19:10:57 r530a cron[107258]: Error: bad minute; while reading /etc/crontab
Jan 9 19:10:57 r530a cron[107258]: (*system*) ERROR (Syntax error, this crontab file will be ignored)
Run Code Online (Sandbox Code Playgroud)
良好的输出:
Jan 9 19:19:01 r530a cron[107258]: (*system*) RELOAD (/etc/crontab)
Run Code Online (Sandbox Code Playgroud)
那是在 Debian 8 上。在其他系统上,cron 可能会登录到不同的文件。
(我以为我可以通过使用 systemd's 来避免寻找正确的日志文件journalctl -u cron,但这并没有向我显示这些日志条目,实际上似乎由于某种原因在 2 天前停止了记录 cron 事件)
| 归档时间: |
|
| 查看次数: |
66177 次 |
| 最近记录: |