有没有Cron API这样的东西?
我的意思是,是否有一种编程方式可以在不踩到Cron的脚趾的情况下添加/删除Cron作业?
答案 0 :(得分:8)
UNIX cron的API是文件系统。有一个crontab
命令用于安装/编辑用户crontabs。 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 命令
使用正常的POSIX文件访问不会踩到cron的脚趾。请记住,rename将始终将目标名称指向旧文件或新文件,永远不会为空。因此,您可以将文件写入新名称,然后将其重命名为旧文件。
许多编程语言都有API来帮助编写crontabs。例如,CPAN (Perl) has several。
答案 1 :(得分:4)
答案 2 :(得分:0)
你绝对可以把它包裹起来。请参阅Whenever ruby gem。
答案 3 :(得分:0)
如果您指的是基于Web的API,我们已经构建了一个REST API,您的Web应用可以使用该API来触发回调/ 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' \
答案 4 :(得分:-2)
尽管如此,尽管使用crontab编写修改程序并不困难。这种事情(通过文本工具而不是期望代码级API到系统设施)是Unix范例的一部分,真的。
或者,可以使用您喜欢的任何语言的快速脚本和“睡眠”来实现一个非常简单的“cron API”。 :)