關於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時,所有的路徑都寫絕對路徑,包括程序的運行環境!!!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM