crontab -e 运行python的脚本的坑

99 篇文章 0 订阅

用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呢?

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值