服务器上装了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时,所有的路径都写绝对路径,包括程序的运行环境!!!