在window下可正常运行、且在linux下手动执行也可正常运行的python脚本在crontab中无法运行的排查思路

首先在crontab中python脚本后生成log文件以便分析,其中1、2分别为stdout和stderr,双大于号为追加记录而非覆盖(如担心log文件累积太大也可改为单大于号)~/anaconda2/bin/python ~/future_dominant_contract/fdc.py>> /root/future_dominant_contract/fdc.log 2>&1;

查看log文件发现导入包报错,no module named pandas,因常用包肯定已经安装,则考虑是python安装时未将路径注入系统变量,echo $PYTHONPATH果然发现没有任何python路径;

手动执行python脚本正常是因为shell中默认使用的是anaconda的python,可进入python shell——import sys——sys.path证实;

crontab无法执行可能是因为crontab使用原生python(暂未知如何查看crontab的python版本);

思路明确,应该在crontab中指定python版本为anaconda的,而不能直接python(此python版本为crontab的)+脚本.py,~/anaconda2/bin/python~/future_dominant_contract/fdc.py >> /root/future_dominant_contract/fdc.log 2>&1;

通过tail -f /var/log/cron.log动态观察crontab是否正常执行完;

查看fdc.log文件确认此次python脚本可正常运行。

总结debug思路如下:

首先是查找报错原因,可以使用log、断点调试、execute selected codes或者直接print;

其次理解分析报错原因,本例中报错原因容易归因,但如果是其他报错内容极其复杂难懂的情况,最好放弃此种出错功能的解决思路,转而基于get things done原则寻求其他解决方式,条条大路通罗马不能在一条路上被堵死;

最后,做出出错假设后控制变量、分步执行,直至验证对错误的判断并逐步修复之;

最最后,如果不行,重复以上步骤。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181018G03L4G00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

同媒体快讯

扫码关注云+社区

领取腾讯云代金券