2015-07-03 60 views
3

我一直在努力(並尋找)讓這個cron job/python腳本運行一段時間。但是,這顯然不起作用。我不知道如何排除原因,並嘗試了其他SO問題中找到的幾件事情。如何解決此cron作業?

路徑腳本:/home/phil/cron_jobs/octoStatus.py

我想cron來運行每分鐘。

Crontab.txt文件:

*/1 * * * * python /home/phil/cron_jobs/octoStatus/octoStatus.py &> octolog.txt 

的octolog.txt是捕捉輸出和錯誤信息。 「sudo tail/var/log/cron」的輸出

Jul 3 10:20:00 bsd /usr/sbin/cron[83876]: (root) CMD (/usr/libexec/atrun) 
Jul 3 10:20:00 bsd /usr/sbin/cron[83877]: (phil) CMD (python /home/phil/cron_jobs/octoStatus/octoStatus.py &> octolog.txt) 
Jul 3 10:21:00 bsd /usr/sbin/cron[83903]: (phil) CMD (python /home/phil/cron_jobs/octoStatus/octoStatus.py &> octolog.txt) 
Jul 3 10:22:00 bsd /usr/sbin/cron[83934]: (phil) CMD (python /home/phil/cron_jobs/octoStatus/octoStatus.py &> octolog.txt) 

它似乎按需運行每分鐘。但是,腳本的預期結果不會發生。 octolog.txt也沒有被創建。當我手動運行cron-log中顯示的確切語句時,所有事情都按預期正確運行,並且創建了octolog.txt文件。

我在FreeBSD上運行它,我去看/ var/log/syslog,但它不存在。我是FreeBSD的新手,但我不確定在這種情況下意味着什麼,但我想我會提到它。

我不確定其他信息會有幫助,因爲我卡住了。謝謝。菲爾

+1

不確定:但cron是否有PATH集?含義:你不應該使用python解釋器的絕對路徑嗎? –

+0

您是否將您的shell設置爲crontab爲/ bin/bash。 '&>'不在舊的bash版本中,可能不在cron正常使用的shell中('/ bin/sh') – Anthon

+0

我認爲你可能會對某些東西感興趣。我在結構中的其他地方創建了一個新目錄,並使用絕對路徑運行腳本。八卦是在PWD中創建的,並且捕捉到的錯誤與無法在腳本本身內找到提及的文件有關。出於某種原因,我認爲工作目錄是腳本本身的目錄。不知道我爲什麼這麼想。這是否意味着腳本中的所有文件都需要絕對路徑?我想我可以創建一個WORKING_DIR變量並將所有文件追加到該變量的末尾。這是常用的程序嗎? – pedwards

回答

5

首先,每分鐘運行腳本輸出文件給出絕對路徑,你不需要*/1。 Cron默認每分鐘運行一次,因此:

* * * * * /path/to/command 

接下來,您的重定向可能會中斷。 bash手冊頁的格式爲「重定向標準輸出和標準錯誤」下的&>格式,所以我認爲這就是您要做的。但FreeBSD的/bin/sh不是bash。所以:

* * * * * /path/to/command >/path/to/output.txt 2>&1 

這將stdout發送到您的文件,並將stderr複製到標準輸出。

這給我們帶來:

* * * * * python /home/phil/cron_jobs/octoStatus/octoStatus.py > octolog.txt 2>&1 

還要注意根據man 5 crontab,你可以設置你的crontab文件MAILTO變量,它會直接從你的工作輸出/錯誤的電子郵件地址。

請注意,cron使用的PATH可能不包含/usr/local/bin,其中安裝了python。如果您的octoStatus.py腳本包含「shebang」,那麼您可以直接執行它。否則,您將不得不提供python二進制文件的完整路徑,或者將一個PATH變量添加到您的crontab(類似於上面提到的MAILTO)。在任何情況下,您都可以通過閱讀man 5 crontab獲取格式說明。

+0

謝謝。雖然我沒有解決我所有的問題,但這無疑使我繼續前進。 – pedwards

2

我會建議你直接從你的python腳本以append模式寫入文件。

還只是猜測,但我認爲你應該在評論指出的東西像python home/phil/cron_jobs/octoStatus/octoStatus.py &> /home/phil/cron_jobs/octoStatus/octolog.txt

+0

謝謝。您的回答,加上hiro的評論,幫助我推進故障排除。 – pedwards