虚拟主机域名注册-常见问题python开发 → python开发


[原创]centos下的crontab中python脚本不执行的解决过程
作者:

centos下的crontab中python脚本不执行.

然后我手工执行,却是正常的,这下奇怪了。

上网搜了一下,很多人说是命令的路径没有写对,但是我都写成:/usr/bin/python,说明不是这里的问题。

我再搜,有些说,第一行要指定执行的类型,后后我就把第一行改成:#!/usr/bin/python

结果还是不对。


到底是哪出了问题呢?

我查看了cron的执行日志。

内容如下:

#tail /var/log/cron

显示如下的记录信息:

May 14 21:20:01 localhost CROND[32237]: (root) CMD (/usr/bin/python /home/myservice/UpdateProDate/Index.py)

说明确实执到的。但是却没有达到预期的效果。


那是不是执了但没有执行成功呢,那就把运行的信息输入到一个日志文件里看看。

于是改成如下代码:

42 * * * *  /usr/bin/python /home/myservice/UpdateProDate/Index.py >> /home/logs/UpdateProDate.log2>&1


执行后,发现是python在报字符编码的错误。

于是我先把Index.py里的print("中文")改成print("english")

果然能顺利执行了。


但这不对啊,手工执行的时候,中文是可以的,那有可能是没有加载到环境就变量。


计划任务是用crontab -e来添加的,但并没有加载到root的环境变量,所以,改成如下的命令:


1
42 * * * * source ~/.bashrc && /usr/bin/python /home/myservice/UpdateProDate/Index.py >> /home/logs/UpdateProDate.log 2>&1

果然,能完美地执行,还可以记录执行的日志。

 



来源:
阅读:6314
日期:2014-05-14

【 双击滚屏 】 【 推荐朋友 】 【 收藏 】 【 打印 】 【 关闭 】 【 字体: 】 
上一篇:last命令查看系统重启状态(人工手动重启的还是系统内用命令重启的系统)
下一篇:[转帖]辨别百度蜘蛛ip真伪的方法
  >> 相关文章