2017-08-17 83 views
1

我只是在Cent OS開發服務器上設置了一個cron選項卡/作業。爲CentOS 7安排使用crontab/cron的python 3.6腳本

在我的crontab中,我有以下:

34 15 * * * CD welcomeclient-0.0.5 & & python3.6 main.py

(忽略時間設定,在其中加入約15 :32 UTC服務器時間,以獲得下一次計劃運行)。

在命令行cd welcomeclient-0.0.5 & & python3.6 main.py很好......任何建議?

新增信息:welcomeclient-0.0.5是根下的液滴,並python3.6在USR/bin中......

回答

2

嘗試在你的crontab命令使用絕對路徑:

34 15 * * * cd /foo/bar/welcomeclient-0.0.5 && /usr/bin/python3.6 main.py 

或者,假設main.py不還使用相對路徑它裏面:

34 15 * * */usr/bin/python3.6 /foo/bar/welcomeclient-0.0.5/main.py 
+0

目錄welcome-client實際上在根目錄中...... –

+0

這對我應該如何引用它有影響嗎? –

+0

我修改的是:50 20 * * * /usr/bin/python3.6 /root/welcomeclient-0.0.5/main.py&&&&root/welcomeclient-0.0.5/main .log' –

1

貌似你試圖改變目錄的crontab,就像omu_negru說你需要使用完整代替路徑。這是因爲crontab即使在您的名字下運行也不會繼承您的環境變量,例如$ PATH。

試試這個。首先,轉到您的腳本所在的目錄...並將您的main.py轉換爲可執行文件,以便您不必再調用python main.py。最簡單的方法,這樣做是...

$ chmod u+x main.py 

,如果你做的LS現在-l,你會看到你的權限,這將允許你直接運行它的用戶部分有「×」。

-rwxr--r-- 1 user user 0 Aug 17 17:55 main.py 

現在您可以簡化crontab的語法是這樣的......

34 15 * * * /foo/bar/welcomeclient-0.0.5/main.py 

我也想從腳本輸出捕獲到一個日誌文件,以便更容易當排查事情沒有我們的工作按計劃,具體如下:

34 15 * * * /foo/bar/welcomeclient-0.0.5/main.py & >> /foo/bar/main.log 

日誌應該被添加到登錄旋轉,否則將繼續填補,並最終使你的系統運行的空間,但這是另一個牛逼opic已經在這個網站上解決。

+0

添加了我的問題中包含的信息 - 另外,在輸出任何內容之前main.log必須存在,否則cron會在第一次「成功但未成功」運行後創建它? –

+0

我現在實際上100%確定。我通常會前往目錄,並使用'touch main.log'來確保它在登錄之前確實存在。 – darekm101