2012-10-29 163 views
0

我有一個python腳本,上傳到一個全天候運行的web服務器上。我想自動執行此腳本,以便它每小時自動運行一次。這可能嗎?我碰到了cron工作的東西,但我不熟悉如何實現這一點。任何幫助或例子都會有所幫助。自動化Python腳本

+0

你的問題是關於['cron'](http://en.wikipedia.org/wiki/Cron#Examples)嗎? – chrisaycock

+0

不是python特有的。站內搜索。 –

+0

cron真的是這裏最好的答案。肯定有一條學習曲線,但其他任何工具都會變得過於矯枉過正,並且可能是一個可疑附加值的cron包裝。 – mattbornski

回答

1

打開你的cron作業文件,

crontab -e 

中加入這一行

* 0 * * * /path/to/my/script 

我會建議使用bash腳本或東西來檢查進程是否已經在運行。

if [ `ps -u USERNAME | grep -i PROCESSNAME | wc -l` -lt 1 ] 
then 
    nohup python main.py & 
fi 

編輯

鍵入命令crontab -e然後按回車鍵。你的屏幕會變成黑色,並附帶一排~。按i您現在處於插入模式。請輸入* 0 * * * /path/to/my/script,確保這是您腳本的絕對路徑。按Esc,然後輸入:x,然後按回車。這應該保存cron文件,也就是假設vivim是cron文件的默認編輯器。

旁註

另外,還要確保你的腳本是可執行的,chmod 777 myscript.py應該做的伎倆,但是請使用chmod和權限熟悉。

另外請確保你的#/python/version/to/use作爲python文件的第一行。

+0

約翰,我不知道如何做到這一點。我所知道的是,我有一個名爲program.py上傳到服務器上的文件,我想定期執行它..有人告訴我,它可以通過cron job....這就是我所知道的。你能否一步一步詳細說明? – khan

+0

是的..我有。 – khan

+0

@khan,請參閱編輯。 – John

1

第一:問問自己數據應該是動態而不是靜態的。通過數據庫或cgi腳本可以更好地訪問動態數據。

第二:請仔細閱讀說明書。 crontab是用於管理cron作業的程序。網絡搜索可以給你更深入的信息(知道哪個釘子是戰鬥的一半)。 man crontab在計劃中沒有太多幫助,但是如果它不按照您的期望編輯文件,可以指出程序的指針。

第三:通過執行'which python'並將描述符添加到文件的頂部來確定python的運行位置。在我的情況下,它是#!/ usr/bin/python

第四:將你的pyhton腳本放在適當的地方,或許/ usr/local/sbin /如果它足夠重要並且你有權限。使用文件上的chmod 775使您的文件可執行。運行該文件以確保它按預期執行。

第五:使用crontab -e編輯cron作業表如果你不能像自己一樣運行它,請嘗試在sudo下運行它(例如sudo crontab -e)。

第六:添加行0 * * * * /myPath/myfile.py

這將運行每分鐘變化爲00維基百科說@hourly應該工作時間,但我從來沒有嘗試過。

格式如下

* * * * * command to be executed 
┬ ┬ ┬ ┬ ┬ 
│ │ │ │ │ 
│ │ │ │ │ 
│ │ │ │ └───── day of week (0 - 6) (0 is Sunday) 
│ │ │ └────────── month (1 - 12) 
│ │ └─────────────── day of month (1 - 31) 
│ └──────────────────── hour (0 - 23) 
└───────────────────────── min (0 - 59) 

第七:測試測試測試。

crontab -l列出了cron作業規範。

當cron執行時,可能必須存在環境變量,例如$ PYTHONPATH。

如果crontab中有6個字段,則第一個字段可能是秒。

有一天你想記錄seomthing的輸出。閱讀關於在/ var/logs中創建日誌文件目錄以及如何使用/etc/logrotate.d/文件進行管理的信息。

+0

這真的很有幫助。謝謝。 – khan