我的crontab没有运行,我正在试图找出原因。我在/etc/cron.d
到/var/www/mysite.crontab
user@ip-xxxxxxxxxx:/etc/cron.d$ ll
total 20
drwxr-xr-x 2 root root 4096 Apr 11 03:48 ./
drwxr-xr-x 96 root root 4096 Apr 16 00:50 ../
lrwxrwxrwx 1 root root 30 Apr 11 03:47 mysite.crontab -> /var/www/mysite.crontab
-rw-r--r-- 1 root root 124 Feb 27 2012 drupal7
-rw-r--r-- 1 root root 544 Sep 12 2012 php5
-rw-r--r-- 1 root root 102 Apr 2 2012 .placeholder
实际的cron文件是......
#Purge old deals
4 1 * * * www-data wget -q -O- http://www.mysite.com/cron/clean > /dev/null 2>&1;
答案 0 :(得分:3)
奇怪的是问题在于文件的名称。在.
目录中,您不得使用/etc/cron.d
作为文件名的一部分。
此逻辑位于database.c
文件的函数valid_name
中。将文件重命名为mysite_crontab应该可以解决问题。
一般来说,文件名可能只是一个简单的名称mysite
,因为它在这个目录中意味着它已经是一个cron文件了。
指向的文件必须由root拥有,这在/etc/cron.d
目录支持的手册页中说明:
cron守护程序本身包含对
/etc/cron.d
的支持,它将此位置作为系统范围的crontab假脱机处理。此目录可以包含按照/etc/crontab
中使用的格式定义任务的任何文件,即与用户cron spool不同,这些文件必须提供用户名来运行任务定义中的任务。此目录中的文件必须由root 拥有,不需要是可执行文件(它们是配置文件,就像
/etc/crontab
一样),并且必须符合相同的命名约定。 run-parts(8)使用它们:它们必须仅由大写和小写字母,数字,下划线和连字符组成。这意味着他们不能包含任何点。如果为cron指定了-l
选项(此选项可以通过/etc/default/cron
设置,请参见下文),那么它们必须符合LSB命名空间规范,与--lsbsysinit
选项中的/etc/cron.{hourly,daily,weekly,monthly}
选项完全相同。运行的部件。此功能的目的是允许需要比{{1}}目录更精细地控制其调度的程序包将crontab文件添加到/etc/cron.d。此类文件应以提供它们的包命名。