PS:原创文章,如需转载,请注明出处,谢谢!
本文地址:http://flyer0126.iteye.com/blog/2388142
工作中遇到的小问题,随手记录一下。最近写了一个数据同步python任务脚本,手动执行正常,但配到crontab中无法运行,折腾半天终于搞好了,
一、绝对路径问题
crontab中python命令使用绝对路径,如:
*/5 * * * * /usr/local/bin/python2.7 /home/work/user/main.py > /yyy.log 2>&1
程序中涉及文件路径,相对路径改为绝对路径,如:
file = 'conf'
改为:
file = '/home/work/user/conf'
二、环境变量问题
预安装python版本可能非实际使用版本,可使用绝对路径解决(如一)
如果需要生效你的bash信息,可以在前面加上“source ~/.bashrc &&”,如:
*/5 * * * * source ~/.bashrc && /usr/local/bin/python2.7 /home/work/user/main.py > /yyy.log 2>&1
三、文件可执行权限
设置python文件的可执行权限,
chmod +x main.py
四、crontab命令不可使用函数
本来想实现日志的切分,使用$(date -d "today" +"%Y%m%d_%H%M%S").log 来实现,发现配置后不执行,改为固定文件即可解决。注:也是本次折腾耗时最长的问题点。
*/5 * * * * /usr/local/bin/python2.7 /home/work/user/main.py > /log/$(date -d "today" +"%Y%m%d_%H%M%S").log 2>&1
改为:
*/5 * * * * /usr/local/bin/python2.7 /home/work/user/main.py > /log/cron.log 2>&1
大部分crontab任务不执行都可通过以上几点来逐步排查,如有疏漏,后续补充~