crontab 有类似 lint 的东西吗?我想知道我已经整理好我所有的空间和星星,而无需等待某些东西不起作用。
6 回答
有一个用于 crons 的 Python linter。查看chkcrontab
项目
您可以通过以下方式安装它pip
:
pip3 install chkcrontab
示例用法:
chkcrontab /etc/cron.d/power-schedule
Checking correctness of /etc/cron.d/power-schedule
E: 15: 0 12 * foo * * root echo hi
e: FIELD_VALUE_ERROR: foo is not valid for field "month" (foo)
e: INVALID_USER: Invalid username "*"
E: There were 2 errors and 0 warnings.
我发现CronWTF在编写 crontab 时非常有用 - 它将你的星星和命令转换成更人性化的东西,从而更容易阅读奇怪的 cron 作业。
更好的是,因为它都是 javascript,你可以在本地运行它,而且没有人需要知道你的顶级 sekrit cron 作业。
如果您编写 ruby 代码,另一种选择是使用when gem - 您使用一个示例 ruby 文件调用schedule.rb
来解析,并像这样生成 crontab:
every 10.minutes do
command "/usr/bin/my_great_command"
end
会给你一个 crontab 条目
0,10,20,30,40,50 * * * * /usr/bin/my_great_command
而这个在这里:
every 2.days, :at => '4:30am' do
command "/usr/bin/my_great_command"
end
会给你:
30 4 1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31 * * /usr/bin/my_great_command
我认为您不需要 crontab 的 lint。有 5 个字段用空格隔开,然后是一个空格,然后是要运行的命令,它的参数结束行。
此外,至少在 Ubuntu 上,crontab 不会让您保存 bum 文件。我只是尝试了一些东西,但它对所有的东西都嗤之以鼻。我想这意味着 crontab 是它自己的 'lint for cron'。
我不确定这是否是您正在寻找的那种东西,但它通过向您确切显示您将计划设置为的内容,使编写 crontab 变得非常容易:
它可能有点偏离,但一种简单的方法是使用图形 crontab 编辑器(如 kcron 或 gcrontab)加载它。如果您需要在脚本中调用它,这个问题是关于如何在 php.ini 中调用它。
如果您无法访问 python 和 pip 来使用,您可以尝试使用Wicked Cool Shell Scripts, 2nd Edition命名48-verifycron
的shell 脚本chkcrontab