我更喜欢在/ etc / crontab中粘贴预定的任务,所以我可以一眼就看到计划运行的是什么,而不pipe运行哪个用户。
唯一的问题是格式不能在保存时被validation,不像crontab -e – 所以一个stream浪的angular色可以悄悄地破坏整个cron。
有没有办法在保存之前/之后validation/ etc / crontab格式?
这已经被堆栈溢出回答了。
邪恶的酷shell脚本有一个shell脚本validationcrontab文件。
您可以在这里获得包含脚本的zip存档
这个脚本叫做verifycron
另一个更新的解决scheme是python脚本chkcrontab
我发现的唯一可靠的方法是检查日志。
cron
每隔一分钟检查/etc/crontab
,并logging一条消息,指出它已经重新加载了它,或者发现了一个错误。
所以在编辑之后,运行这个:
sleep 60; grep crontab /var/log/syslog | tail
或者,不要等一整分钟,但是直到下一分钟+5秒:
sleep $(( 60 - $(date +%S) + 5 )) && grep cron /var/log/syslog | tail
示例输出错误:
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)
良好的输出:
Jan 9 19:19:01 r530a cron[107258]: (*system*) RELOAD (/etc/crontab)
这是在Debian 8上。在其他系统上,cron可能会login到不同的文件。
(我以为我可以通过使用systemd的journalctl -u cron
避免search正确的日志文件,但是这并没有显示我这些日志条目,实际上由于某种原因,似乎已经停止loggingcron事件2天前)
我在这里find了这个很酷的解决scheme: https : //crontab.guru
它不只是validationcrontab,它明确告诉你什么时候crontab将运行,并突出错误的地方。
在Ubuntu上,似乎我可以运行:
crontab path/to/crontab/file
注意:这有启动这个cronjob的副作用(谢谢@NZD)
如果该文件无效,则会出现如下错误:
"crontab":11: bad minute errors in crontab file, can't install.