【问题标题】:Cron API: is there such a thing?Cron API:有这样的事情吗?
【发布时间】:2009-09-24 22:36:14
【问题描述】:

有没有像 Cron API 这样的东西?

我的意思是,有没有一种程序化的方式来添加/删除 Cron 作业而无需踩到 Cron 的脚趾?

【问题讨论】:

    标签: linux cron


    【解决方案1】:

    UNIX cron 的 API 是文件系统。有一个crontab 命令用于安装/编辑用户 crontab。使用 crontab 命令的主要原因是对用户实施安全限制(例如,/etc/cron.allow/etc/cron.deny)。

    系统 cron 选项卡只是放置在 /etc/cron.d(和 cron.daily/weekly/monthly)中的文件。不需要特别照顾;只需将文件放置到位。引用顶部/etc/crontab

    # /etc/crontab: system-wide crontab
    # Unlike any other crontab you don't have to run the `crontab'
    # command to install the new version when you edit this file
    # and files in /etc/cron.d. These files also have username fields,
    # that none of the other crontabs do.
    

    格式与用户 crontabs 相同,记录在 crontab(5) 中,但在命令之前有一个用户字段。其中 SPACE 表示空格(一个或多个),0 和 7 表示星期日:

    分钟 SPACE 小时 SPACE day-of-month SPACES month SPACE day-of-周 SPACE 用户 SPACE 命令

    使用普通的 POSIX 文件访问不会影响 cron 的脚趾。请记住,rename 的目标名称将始终指向旧文件或新文件,永远不会指向任何内容。因此,您可以将文件写入一个新名称,然后将其重命名为旧名称。

    许多编程语言都有 API 来帮助编写 crontab。例如,CPAN (Perl) has several

    【讨论】:

    • 因此,如果我将一个文件放到 /etc/cron.d/ 中,它会在下一次迭代时被 cron 拾取,不会造成伤害吗?我不需要通过crontab?
    • @Jean-Lou Dupont:正确。您可以将文件放在 /etc/cron.d 中。
    【解决方案2】:

    Augeas 有一个Cron module

    【讨论】:

      【解决方案3】:

      你绝对可以环绕它。请参阅 Whenever ruby​​ gem。

      【讨论】:

        【解决方案4】:

        如果您指的是基于 Web 的 API,我们已经构建了一个 REST API,您的 Web 应用可以使用它来触发回调/Webhook。查看SaturnAPI's Cron。您发出 HTTP 请求来安排、查看和删除作业。以下是调度作业的示例:

        curl -X POST \
          https://saturnapi.com/cron/jobs \
            -H saturnapi-access-key:'YOUR_SATURNAPI_ACCESS_KEY' \ 
            -d dateTimeUTC='2015:09:25 14:30' \
            -d dateTimeFormat='YYYY:MM:DD HH:mm' \
            -d callbackURL='https://your.verified.domain.com' \
        

        【讨论】:

          【解决方案5】:

          并非如此,尽管使用 crontab 编写修改脚本并不难。这类事情(通过文本工具工作,而不是期望系统设施的代码级 API)是 Unix 范式的一部分,真的。

          或者,可以使用您喜欢的任何语言的快速脚本和“睡眠”来实现一个非常简单的“cron API”。 :)

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-06-25
            • 2013-06-26
            • 2014-09-10
            • 1970-01-01
            • 2010-09-26
            • 1970-01-01
            相关资源
            最近更新 更多