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脚本不成功的解决方案的主要内容,如果未能解决你的问题,请参考以下文章

Crontab定时任务中python3脚本无法运行问题解决

[Shell]crontab 运行任务调用shell脚本,相对路径无法找到

如何使用 crontab 运行运行 Python 脚本的 Bash 脚本

crontab调用python时出现ImportError: No module named XXX的问题

Crontab 里解决脚本冲突的问题

关于linux系统下CRONTAB运行python脚本不生效