【发布时间】:2009-09-24 22:36:14
【问题描述】:
有没有像 Cron API 这样的东西?
我的意思是,有没有一种程序化的方式来添加/删除 Cron 作业而无需踩到 Cron 的脚趾?
【问题讨论】:
有没有像 Cron API 这样的东西?
我的意思是,有没有一种程序化的方式来添加/删除 Cron 作业而无需踩到 Cron 的脚趾?
【问题讨论】:
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。
【讨论】:
Augeas 有一个Cron module。
【讨论】:
你绝对可以环绕它。请参阅 Whenever ruby gem。
【讨论】:
如果您指的是基于 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' \
【讨论】:
并非如此,尽管使用 crontab 编写修改脚本并不难。这类事情(通过文本工具工作,而不是期望系统设施的代码级 API)是 Unix 范式的一部分,真的。
或者,可以使用您喜欢的任何语言的快速脚本和“睡眠”来实现一个非常简单的“cron API”。 :)
【讨论】: