Crontab里调用python脚本不成功的解决方案
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Crontab里调用python脚本不成功的解决方案相关的知识,希望对你有一定的参考价值。
crontab里经常会调用一些程序,但是很多时候调用python是不成功的,但是手动则是OK的,在看日志(/var/log/cron)的时候,却是显示正常,这种情况怎么破呢?其实主要就是这么几个地方:
1)轻易不要用if __name__ == "__main__";
很多主管都习惯让自己手下人把脚本写成模块化,然后潇洒的走一个整合,但是crontab对这个方法似乎不是很灵光,因为python运行的时候是从if __name__ == "__main__"开始执行,而上面的那些类crontab识别起来很费劲,而只能识别函数,而且本来crontab里放置就是就是一些看门狗脚本,所以尽可能写成流水帐,格式上不要过于复杂。
2)注意中英文,这一点是隐藏的坑点,有些crontab日志显示脚本执行成功,但是把结果重定向到某文件里发现其实是有编码报错的问题;
3)写绝对路径,如果是yum安装,就写/usr/bin/python,如果是自定义安装,就写全路径,脚本文件也写绝对路径;
4)有些python脚本需要涉及到数据库,但是有时候crontab找不到那个具体的数据库,这个时候就需要在python 脚本执行之前重新设定一下环境变量比如WOW_PATH,比如
5)如果以上都不好使,那就在crontab里加上source /etc/profile,如下:
source /etc/profile && python py脚本的绝对路径
本文出自 “生活就是等待戈多” 博客,请务必保留此出处http://chenx1242.blog.51cto.com/10430133/1855941
以上是关于Crontab里调用python脚本不成功的解决方案的主要内容,如果未能解决你的问题,请参考以下文章
[Shell]crontab 运行任务调用shell脚本,相对路径无法找到
如何使用 crontab 运行运行 Python 脚本的 Bash 脚本