python脚本在crontab中执行的几个坑

释放双眼,带上耳机,听听看~!

PS:原创文章,如需转载,请注明出处,谢谢!     

本文地址:http://flyer0126.iteye.com/blog/2388142

 

    工作中遇到的小问题,随手记录一下。最近写了一个数据同步python任务脚本,手动执行正常,但配到crontab中无法运行,折腾半天终于搞好了,

 

    一、绝对路径问题

    crontab中python命令使用绝对路径,如:


1
2
1*/5 * * * * /usr/local/bin/python2.7 /home/work/user/main.py > /yyy.log 2>&1  
2

    程序中涉及文件路径,相对路径改为绝对路径,如:


1
2
3
4
1file = 'conf'
2改为:
3file = '/home/work/user/conf'
4

     二、环境变量问题

    预安装python版本可能非实际使用版本,可使用绝对路径解决(如一)

    如果需要生效你的bash信息,可以在前面加上“source ~/.bashrc &&”,如:


1
2
1*/5 * * * * source ~/.bashrc && /usr/local/bin/python2.7 /home/work/user/main.py > /yyy.log 2>&1
2

    三、文件可执行权限 

    设置python文件的可执行权限,


1
2
1chmod +x main.py
2

    四、crontab命令不可使用函数

    本来想实现日志的切分,使用$(date -d "today" +"%Y%m%d_%H%M%S").log 来实现,发现配置后不执行,改为固定文件即可解决。注:也是本次折腾耗时最长的问题点。


1
2
3
4
1*/5 * * * * /usr/local/bin/python2.7 /home/work/user/main.py > /log/$(date -d "today" +"%Y%m%d_%H%M%S").log 2>&1
2改为:
3*/5 * * * * /usr/local/bin/python2.7 /home/work/user/main.py > /log/cron.log 2>&1
4

     

    大部分crontab任务不执行都可通过以上几点来逐步排查,如有疏漏,后续补充~

 

给TA打赏
共{{data.count}}人
人已打赏
安全技术

c++ list, vector, map, set 区别与用法比较

2022-1-11 12:36:11

安全资讯

首汽约车发布B2B开放加盟平台 明年预期规模10万辆

2016-12-29 22:44:30

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索