crontab -e 运行python的脚本的坑

用shell + crontab写了个监控程序,详情见上一篇博文 “时时监控程序运行的方法”

其中shell脚本运行程序的命令:

python main_dynamic.py

虽然能监控到程序有没有运行,但执行出了问题。因为用ps -aux|grep main_dy,没有找到运行的脚本。

始终不明白为什么这里一直失败。因为我直接手动执行相应的脚本。 sh .run.sh,是可以成功的。

想到路径可能会导致这个问题。

所以将命令改动了,如下:

python /home/xxxx/yyyyy/main_dynamic.py

用ps查找,其结果仍然是失败。

但在查找的过程中,系统有提示新邮件: /var/log/message

然后进去看了看,提示找不到pathlib包。进行推断python解释器用python2的,因为python3是支持的。

所以将命令改写了。

 /root/anaconda3/xxxx/yyyy/python   /home/xxxx/yyyyy/main_dynamic.py

测试就OK了。

为什么没有快速怀疑到这点呢?

因为在Linux系统中,默认的是python3,在任何路径下直接输入python,显示都是python3。python2.exe目录除外。

结论:crontab 执行用到了python2;

提问:

crontab执行时为什么会用到python2呢?

 


版权声明:本文为ningyanggege原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。