Crontab没有运行

时间:2013-04-16 11:35:59

标签: linux cron

我的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;

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。此类文件应以提供它们的包命名。