上周在公司写了一个crontab任务,发现没有执行。我仔细查看了sh脚本,里面用到的python命令以及文件,我都采用了全路径。我直接在命令行下跑这个sh脚本,是能正常使用的。
为什么会这样呢?
同事提醒我,可能是权限问题,于是我对脚本涉及到的文件都chmod 777一下,然后把crontab任务的时间改成下一分钟...结果,脚本还是没有起来。
后面通过google了解到:
每次编辑完某个用户的cron设置后,cron自动在/var/spool/cron下生成一个与此用户同名的文件,此用户的cron信息都记录在这个文件中,这个文件是不可以直接编辑的,只可以用crontab -e 来编辑。cron启动后每过一份钟读一次这个文件,检查是否要执行里面的命令。引用于:http://www.cnblogs.com/cosiray/archive/2012/03/09/2387361.html
这告诉我,测试crontab时,不应该把跑脚本的时间设置成离现在1分钟以内。也就是说,现在如果是14:24分,你设置cronbtab14:25跑,编辑完crontab后,cron还没有来得更新我们刚才编辑文件,也就导致任务没有执行了。
我把任务的启动时间重新设置后,crontab任务就正常启动了。
总结一下,crontab任务没有启动的可能原因:
crontab的环境变量和控制台是不同的,比如控制台能直接找到python命令,而到了crontab下,要写python安装的全路径。
保证脚本文件在crontab下有权限运行。
测试crontab时,可能由于启动时间设置不正确,而导致crontab错过执行的时机。建议测试时,把启动的时间设置成2分钟后。
为什么crontab任务创建了没执行?,布布扣,bubuko.com
原文地址:http://my.oschina.net/u/1453800/blog/287763