2017-10-09 238 views
0

我知道這個問題之前已經被問過,但是我仍然無法使它工作。我的crontab文件只是有這樣的:Crontab Python腳本沒有運行

0 5 * * * /home/harry/my_env/bin/python /home/harry/compile_stats/process_tonight.py 

這裏是我的process_tonight.py是什麼樣子:

import datetime 
import sys 
sys.path.append('/home/harry/compile_stats/') 
import compile # Module in above path 

print("Processing last night\n") 

date = str(datetime.datetime.today().year) + "-" + str(datetime.datetime.today().month) + "-" + str(datetime.datetime.today().day-1) 

compile.process(date, date) 

這個文件工作完全正常,當我剛剛從經常在命令行中運行它,但不工作當我安排它。

我也看了看我的/ var/log/syslog文件,我正在運行的任務沒有顯示在那裏。

任何想法?

編輯: 它被設置爲在我的例子(5 A.M)運行的時間僅僅是放在一個隨機時間它沒有運行任何時候我擺在那裏。

編輯2#:

由於每個用戶speedyturkey我簡化我的Python腳本,以便更好地診斷問題:

import datetime 
#import sys 
#sys.path.append('/home/harry/compile_stats/') 
#import compile # Module in above path 

print("Processing last night\n") 

date = str(datetime.datetime.today().year) + "-" + str(datetime.datetime.today().month) + "-" + str(datetime.datetime.today().day-1) 

#compile.process(date, date) 

什麼也沒有發生,所以我想這個問題是不是與進口。

+1

你使用哪個crontab文件?是/ etc/crontab,/etc/cron.d/somthng,/etc/cron.hourly,/ var/spool/cron/username?你是如何在那裏添加線的?用哪個命令?或者只是通過編輯? –

+0

@SergeyVasilyev我使用「crontab -e」打開它,我只是在那裏添加它(如果重要的話使用vim)。鍵入「crontab -l」顯示我添加的內容 – Hobbit36

+1

可能很明顯,但這會使其每天早上5點運行。你是否等了整整24小時才確定系統時間不僅僅是怪異的或者其他的? – Xorgon

回答

1

根據評論,我相信問題在於你如何調用crontab中的python腳本。運行你給出crontab的確切命令,並修復它返回的任何問題。

+0

對不起,那不是。我跑了確切的命令,它工作得很好。 – Hobbit36

+0

你是否從冷登錄中運行它?沒有先前的環境設置等? – Xorgon

+0

剛剛從冷登錄(並沒有設置)運行它。工作正常 – Hobbit36

0

,而不是試圖從你的Python腳本修改的路徑,你可以這樣做:

cd /home/harry/compile_stats/ && ./process_tonight.py

這將使它更容易import compile正確。請注意,這也需要製作process_tonight.py可執行文件(chmod +x process_tonight.py)並添加一個指向Python解釋器的指針(我猜...#!/ home/harry/my_env/bin/python)。

編輯迴應上述編輯#2: 實際上無法確定它是否從您編寫的代碼運行 - 打印語句未被重定向。我建議更改代碼以執行某種可以檢查的副作用。例如,導入子,然後做(例如):

subprocess.call("date > /home/harry/compile_stats/date.txt")

如果腳本正確執行,它會的date輸出重定向到指定的文件。

+0

你也可能希望簡化你的Python腳本,直到你解決你的cron問題爲止......很難說你的Python腳本根本沒有被調用,或者被調用並失敗(可能是由於進口問題)。 – speedyturkey

+0

檢查我最近的編輯。我簡化了它,它仍然沒有運行。猜猜這不是導入 – Hobbit36

+0

我在回覆中添加了一個編輯到我的答案。這是一個棘手的診斷,但我覺得你越來越近! – speedyturkey

0

好吧,我能得到它通過創建特定的cron文件,把信息和那裏,在加載它的工作。

所以process_tonight。cron的包含此:

0 5 * * * /home/harry/my_env/bin/python /home/harry/compile_stats/process_tonight.py 

而我只是裝成的crontab:

crontab process_tonight.cron 

真的不知道爲什麼這個工程及其他方式不中(可能某人有一個想法)。