作者:老葛 亚艾元软件
配置Drupal的定时任务,常用linux下面的/etc/crontab,但是这次的配置怎么都不起作用。
问了专门配置服务器的工程师,告诉我可以使用crontab -l, crontab -e命令行配置。
配置以后,仍然没有起作用。后来使用了一个替代方法,经过观察,效果不行。后来又研究这个crontab的配置。
查找cron的日志,在/var/logs目录下面没有发现cron的日志。不过后来发现了syslog日志。
打开一看,里面有这样的信息:
Error: bad minute; while reading /etc/crontab
Error(Syntax error, this crontab file will be ignored)
看到日志,让我对于解决这个问题信心大增。
从日志里面可以看出来,自己在/var/spool/cron/crontabs/root下面生成的root的crontab配置,里面有问题:
0/10 * * * * root wget -O - http://example.com/cron.php >/dev/null 2>&1
我大概是这么配置的,在/var/spool/cron/crontabs/里面的crontab配置,配置里面不需要添加用户名。改为下面的配置就好了:
0/10 * * * * wget -O - http://example.com/cron.php >/dev/null 2>&1
中间还有一个问题:
No MTA installed, discarding output,
一直报这个信息。这是由于有时候需要发送邮件,但是我们没有配置邮件发现相关信息。
在crontab里面的指令,后面追加:
>/dev/null 2>&1
后面的这段代码,是为了解决这个问题追加的。
此外,我还专门看到了ibm的crontab文档:
https://www.ibm.com/support/knowledgecenter/ssw_aix_72/com.ibm.aix.cmds1/crontab.htm
里面对这个命令的讲解有详细的介绍。我怀疑,可能由于自己没有配置cron.allow, cron.deny两个文件导致的,或者其它原因。平时的服务器没有遇到过这样的问题,这次的服务器是由vagrant虚拟出来的。