centos7 crontab 定時執行python任務不執行的原因及解決辦法


1、問題描述

在用crontab設置定時任務時,發現py腳本在crontab中報錯,顯示import某些包找不到,但是手動直接運行py腳本,完全正常。
 
01 05 * * * ./get_topic_hourly.sh >> get_topic_hourly.log 2>&1

2、問題解析

主要是crontab的運行目錄和py腳本運行目錄不一樣(直接執行和通過任務執行,程序的 執行環境不同),更改py頭的目錄,直接指定當前系統中Python的目錄,即更改py腳本中默認的頭為 Python 安裝 目錄“!/usr/local/bin/python”,具體根據自己的目錄更改
查看python的安裝目錄可以用 which python 命令
 
若以上設置了依舊不執行可以嘗試下面的方式執行python

* * * * * cd /var/www/clientfolder/ && /usr/bin/python /var/www/clientfolder/your_python_script.py
原因是(直接拷貝):
Script is location-sensitive. This is related to always using absolute paths in a script, but not quite the same. Your cron job may need to cd to a specific directory before running, e.g. a rake task on a Rails application may need to be in the application root for Rake to find the correct task, not to mention the appropriate database configuration, etc
我分析可能是:直接執行腳本,腳本執行環境是腳本所在的目錄,而定時的腳本執行環境默認是root目錄,而當python腳本設置到相對文件路徑時就不能執行了。


免責聲明!

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



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