有没有办法来validation/ etc / crontab的格式?

我更喜欢在/ 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.