【转载】python脚本在crontab中执行的几个坑

【转载】python脚本在crontab中执行的几个坑

    • 一、绝对路径问题
    • 二、环境变量问题
    • 三、文件可执行权限
    • 四、crontab命令不可使用函数

转载地址: http://flyer0126.iteye.com/blog/2388142

一、绝对路径问题

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 777 main.py 

四、crontab命令不可使用函数

本来想实现日志的切分,使用$(date -d “today” +"%Y%m%d_%H%M%S").log 来实现,发现配置后不执行,改为固定文件即可解决。
!!!重点:crontab命令一定不能使用函数。

*/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任务不执行都可通过以上几点来逐步排查,如有疏漏,后续补充~

你可能感兴趣的:(python项目,Hadoop,Stream,Linux)