今天在加一个casperjs脚本执行的定时任务时,发现任务不执行。
命令如下:
* * * * * /usr/local/bin/casperjs /data0/a.js >> /data0/a.log
先去/var/log/cron看,发现任务被调用了:
Oct 22 17:41:01 localhost crond[2727]: (root) CMD (/usr/local/bin/casperjs /data0/a.js >> /data0/a.log)
但是a.log没有任何内容。
估计是脚本根本没有执行,出现错误了。
将系统错误信息也重定向到日志文件:
* * * * * /usr/local/bin/casperjs /data0/a.js >> /data0/a.log 2>&1
这时发现是因为找不到phantom和casperjs,原来我把他俩安装到/usr/local/bin/目录下了,定时任务里的PATH内没有这个目录。
往/usr/bin里加上这两个程序的软链就可以了。
补充:2014.10.30
今天遇到一奇怪现象,一台机器上使用ubuntu账号crontab -e设置的定时任务无法执行,使用root账号则可以,经过一番乱打乱撞,才发现是ubuntu账号密码过期(chage -l ubuntu)。
当你的定时任务无法执行,并且你的server是个快退休的老爷机,不妨看看账号的有效时间。