【问题标题】:Is there a lint like program for crontab?crontab 是否有类似 lint 的程序?
【发布时间】:2009-01-26 11:30:03
【问题描述】:

crontab 有没有类似 lint 的东西?我想知道我已经整理好我所有的空间和星星,而无需等待某些东西不起作用。

【问题讨论】:

    标签: syntax cron sysadmin lint


    【解决方案1】:

    有一个用于 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.
    

    【讨论】:

    【解决方案2】:

    我发现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
    

    【讨论】:

    【解决方案3】:

    我认为您不需要 crontab 的 lint。有 5 个字段以空格分隔,然后是一个空格,然后是要运行的命令及其 args 结束行。

    另外,至少在 Ubuntu 上,crontab 不会让您保存 bum 文件。我只是尝试了一些东西,但它对所有的东西都嗤之以鼻。我想这意味着 crontab 是它自己的 'lint for cron'。

    【讨论】:

    • 大多数 crons 还需要在文件末尾有一个换行符。并不是每个人都以交互方式安装 cron 条目。如果您使用某种自动化或大规模配置管理系统,您将能够轻松/意外地绕过系统作为防御机制的任何健全性检查。我强烈认为 cron 的 lint 是一个非常合理的想法。 (确实,寻找一个是我发现这个老问题的方法。)
    • 在 Ubuntu 上,您还需要在时间字段之后提供用户名
    【解决方案4】:

    我不确定这是否是您正在寻找的那种东西,但它可以通过向您准确显示您正在设置的时间表来让编写 crontab 变得非常容易:

    https://crontab.guru/

    【讨论】:

    • 是的,是的。我希望我能在过去的... 25 年里拥有它?
    • 我听到你的声音了......到现在为止,我确信我每次都浪费了大量的时间重新教学。
    【解决方案5】:

    它可能有点偏离,但一种简单的方法是使用图形 crontab 编辑器(如 kcron 或 gcrontab)加载它。如果你需要在脚本中调用它,this question 是关于如何在 php 中调用它。

    【讨论】:

    • ssh admin@myhost kcron 错误:无法打开显示 不是每个人都有 GUI。
    • 好吧,您几乎可以肯定在某处有一个 GUI。使用 ssh X 转发和瞧 - 窗口出现在您的屏幕上
    • 如果您在我的一台服务器上,则不会。安装足够的 X 库(加上 GTK/Qt/KDElibs/etc)来获得图形编辑器在严肃的服务器上是禁忌。撇开规模原因不谈,我们希望避开可能构成可能攻击媒介的所有内容。
    【解决方案6】:

    您可以尝试从Wicked Cool Shell Scripts, 2nd Edition 命名为48-verifycron 的shell 脚本,
    如果你无法访问 python 和 pip 使用chkcrontab

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-13
      • 1970-01-01
      • 2010-12-12
      • 1970-01-01
      • 1970-01-01
      • 2010-09-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多