关于crontab运行python脚本不生效,但是手动执行却正常的问题

服务器上装了anaconda3(python3.6.3)以及linux原装的python2.7以及其他的python环境

我直接在命令行输入python -V,显示如下内容:

 

我现在有一个Main.py的 python文件(python3写的),打算用linux的crontab定时作业,实现每小时的整点执行一次这个程序。

故我写了一个test_main.sh的脚本,内容如下:(假设Main.py,test_main.sh都在 /home/zhangsan/aaa/ 目录下)

     #!/usr/bin/bash

     cd  /home/zhangsan/aaa

     python Main.py

 

然后crontab -e 来编辑crontab定时作业

   0 * * * *  /home/zhangsan/aaa/test_main.sh

 

但是到了整点之后发现python文件并没有运行成功,然而直接/home/zhangsan/aaa/test_main.sh却可以正常运行。

这个问题困惑了我很久,最终经过查资料得知,运行crontab定时作业里边的东西,都要写绝对路径,python环境最好也写绝对路径

所以把test_main.sh 改成如下内容就可以了。

     #!/usr/bin/bash

     cd  /home/zhangsan/aaa

     /root/anaconda3/bin/python  Main.py

 

原因分析:我认为,这也许时因为crontab运行python的时候,如果不写python的绝对路径,就默认是/usr/bin/python,而/usr/bin/python是python2.7,与我写的pyton3的代码是不兼容的,所以不会正常运行。

                 把python环境改为绝对路径之后,python环境就指定为anaconda的python3.6.3了,所以就可以正常运行了。

总之一句话,在使用crontab时,所有的路径都写绝对路径,包括程序的运行环境!!!

 

转载于:https://www.cnblogs.com/sunshine8/p/7809995.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值