【发布时间】:2009-01-26 11:30:03
【问题描述】:
crontab 有没有类似 lint 的东西?我想知道我已经整理好我所有的空间和星星,而无需等待某些东西不起作用。
【问题讨论】:
crontab 有没有类似 lint 的东西?我想知道我已经整理好我所有的空间和星星,而无需等待某些东西不起作用。
【问题讨论】:
有一个用于 crons 的 Python linter。见chkcrontab project
你可以通过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 代码,另一种选择是使用 whenever gem - 您使用名为 schedule.rb 的示例 ruby 文件进行解析,并生成 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 个字段以空格分隔,然后是一个空格,然后是要运行的命令及其 args 结束行。
另外,至少在 Ubuntu 上,crontab 不会让您保存 bum 文件。我只是尝试了一些东西,但它对所有的东西都嗤之以鼻。我想这意味着 crontab 是它自己的 'lint for cron'。
【讨论】:
我不确定这是否是您正在寻找的那种东西,但它可以通过向您准确显示您正在设置的时间表来让编写 crontab 变得非常容易:
【讨论】:
它可能有点偏离,但一种简单的方法是使用图形 crontab 编辑器(如 kcron 或 gcrontab)加载它。如果你需要在脚本中调用它,this question 是关于如何在 php 中调用它。
【讨论】:
您可以尝试从Wicked Cool Shell Scripts, 2nd Edition 命名为48-verifycron 的shell 脚本,
如果你无法访问 python 和 pip 使用chkcrontab
【讨论】: