我的理解是,我可以将具有简单计划的系统作业添加到/etc/cron.hourly/
,/etc/cron.daily/
等等,将具有自定义计划的系统作业添加到/etc/cron.d/
。
但是在大型 IT 部门中,可能有几个人负责照看一台服务器,那么目录 /etc/cron.d 可能是安装 crontabs 的最佳位置 - 它是一个中心点,可以节省搜索时间!(Cron如何操作)
我创建了/etc/cron.d/testing
以下内容:
# /etc/cron.d/testing: crontab entries for report generation
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
15 13 * * 3 root /usr/bin/supervisorctl start reports
00 16 * * 4 root /usr/bin/supervisorctl start reports
该文件具有以下属性:
user@server:/etc/cron.d$ ls -la
total 28
drwxr-xr-x 2 root root 4096 Jul 14 12:57 .
drwxr-xr-x 146 root root 12288 Jul 14 13:48 ..
-rw-r--r-- 1 root root 188 Feb 20 2014 anacron
-rw-r--r-- 1 root root 102 Feb 9 2013 .placeholder
-rwxr--r-- 1 root root 286 Jul 14 13:43 testing
我于周四下午 1 点重启了机器,希望它能在 13:15 发出报告。(计划是测试此调用,但也将其安排在每周五下午 4 点。)
/var/log/syslog
但什么都没发生。或 Supervisor 日志中没有错误(或任何事件) 。我在 中使用相同的命令/etc/cron.daily/testing
,它有效:
#!/bin/sh
/usr/bin/supervisorctl start reports
...我可以独立调用 Supervisor 作业。因此,我认为问题不在于 Supervisor 作业,也不在于我的调用。
我做错了什么?(问题记录在哪里?)
答案1
crontab 文件使用的格式/etc/cron.d/testing
是正确的。(应该是,它是从 复制而来的/etc/cron.d/anacron
)
问题是我从 Windows 修改了它,可能弄乱了行尾。我重新克隆了anacron
,在 Ubuntu 上编辑了它,一切正常。
(我仍然不知道错误消息(如果有)被记录在哪里。)