1. 程式人生 > 其它 >Linux下定時執行Python指令碼

Linux下定時執行Python指令碼

一、準備Python3環境和指令碼檔案

1.Python3環境可以參考這篇文章:CentOS 7安裝python3 - 韶華瑾年少詩篇 - 部落格園 (cnblogs.com),在此不多作贅述。

2.Python指令碼中涉及到路徑的地方,儘量使用絕對路徑,避免找不到路徑而報錯,這裡我們準備的Python指令碼為:/home/tools/main.py

二、讓Python指令碼定時啟動

1.用root許可權編輯以下檔案

sudo vim /etc/crontab

2.在檔案末尾新增命令

0 */2 * * * /usr/bin/python3 /home/tools/main.py > /home/tools/auto.log

這裡表示的是每2小時整執行一次指令碼並列印日誌。

每次執行指令碼,新的日誌檔案都會將上一次的日誌檔案覆蓋。如果要保留歷史日誌,需要將 “>” 改為 “>>”

三、crontab檔案含義

使用者所建立的crontab檔案中,每一行都代表一項任務,每行的每個欄位代表一項設定,它的格式共分為六個欄位,前五段是時間設定段,第六段是要執行的命令段,下面引用網路上的一張圖來形象地說明:

"*"代表所有的取值範圍內的數字,如月份欄位為*,則表示1到12個月;

"/"代表每一定時間間隔的意思,如分鐘欄位為*/10,表示每10分鐘執行1次。

"-"代表從某個區間範圍,是閉區間。如“2-5”表示“2,3,4,5”,小時欄位中0-23/2表示在0~23點範圍內每2個小時執行一次。

","分散的數字(不一定連續),如1,2,3,4,7,9。

注:由於各個地方每週第一天不一樣,因此Sunday=0(第一天)或Sunday=7(最後1天)。

舉例:

0 */2 * * * /sbin/service httpd restart  # 意思是每兩個小時整點重啟一次apache 

50 7 * * * /sbin/service sshd start  # 意思是每天7:50開啟ssh服務 

50 22 * * * /sbin/service sshd stop  # 意思是每天22:50關閉ssh服務 

0 0 1,15 * * fsck /home  # 每月1號和15號檢查/home 磁碟 

1 * * * * /home/bruce/backup  #
每小時的第一分執行 /home/bruce/backup這個檔案 00 03 * * 1-5 find /home "*.xxx" -mtime +4 -exec rm {} \; # 每週一至週五3點鐘,在目錄/home中,查詢檔名為*.xxx的檔案,並刪除4天前的檔案。 30 6 */10 * * ls # 意思是每月的1、11、21、31日是的6:30執行一次ls命令

注意:當程式在你所指定的時間執行後,系統會發一封郵件給當前的使用者,顯示該程式執行的內容,若是你不希望收到這樣的郵件,請在每一行空一格之後加上> /dev/null 2>&1即可,如:

0 */2 * * * /usr/bin/python3 /home/tools/main.py > /dev/null 2>&1