Linux下定時執行Python指令碼
阿新 • • 發佈:2021-07-29
一、準備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