設定定時執行任務
本篇主要介紹如何在Linux和Windows上分別建立定時執行任務。
Linux篇
Linux下建立定時執行任務可使用crontab,系統預設自帶crontab,在Ubuntu 16.04下進行演示說明。
1.crontab 基本使用
#/etc/init.d/cron status # 檢視狀態 #/etc/init.d/cron start # 啟動crontab服務 #/etc/init.d/cron stop # 停止crontab服務 #/etc/init.d/cron reload # 過載定時任務 #crontab -l # 檢視定時任務列表
2.開啟日誌
需修改配置檔案。
#sudo vim /etc/rsyslog.d/50-default.conf ... cron.* /var/log/cron.log #將cron前面的註釋符去掉 ...
重啟rsyslog:
#sudo service rsyslog restart
3.設定定時執行任務
本次演示定時執行自己寫的一個Python指令碼,bash指令碼或其它的應該也是類似。需要注意的是,最好指定指令碼的絕對路徑,如果發現仍無法解決,可先切換到指令碼路徑下執行。不過,應該是OK的。
... 0 0 * * * python /home/kdv/Desktop/sync-opensource/sync.py # 每天定時執行指令碼 or @daily cd /home/kdv/Desktop/sync-opensource;python /home/kdv/Desktop/sync-opensource/sync.py 0 0 1 * mon python /home/kdv/Desktop/sync-opensource/sync.py # 每週定時執行指令碼 or @weekly cd /home/kdv/Desktop/sync-opensource;python /home/kdv/Desktop/sync-opensource/sync.py
按需要設定每天or每週定時執行,更多請參考連結中的內容。
設定好任務之後,我們可以檢視下任務列表,並需要過載任務。
#crontab -l # 可以檢視我們新增的任務 #/etc/init.d/cron reload # 過載定時任務 #vim /var/log/cron.log # 檢視定時任務產生的日誌
4.測試
圖中是每5分鐘執行指令碼為例進行測試。
左側:指令碼在執行過程中,會生成以當前時間命名的日誌檔案,記錄指令碼在執行過程中的輸出結果。
右側:crontab的日誌檔案,可以看到,每5分鐘,會定時執行一次指令碼。
Windows篇
Windows系統沒有crontab命令,但是Windows系統有跟crontab命令比較接近的命令:schtasks 命令。在Win10上操作。
1.幫助文件
使用如下命令檢視schtasks的幫助文件,以便更多的瞭解該命令。
C:\Users\Administrator>schtasks /? SCHTASKS /parameter [arguments] 描述: 允許管理員建立、刪除、查詢、更改、執行和中止本地或遠端系統上的計劃任 務。 引數列表: /Create 建立新計劃任務。 /Delete 刪除計劃任務。 /Query 顯示所有計劃任務。 /Change 更改計劃任務屬性。 /Run 按需執行計劃任務。 /End 中止當前正在執行的計劃任務。 /ShowSid 顯示與計劃的任務名稱相應的安全識別符號。 /? 顯示此幫助訊息。 Examples: SCHTASKS SCHTASKS /? SCHTASKS /Run /? SCHTASKS /End /? SCHTASKS /Create /? SCHTASKS /Delete /? SCHTASKS /Query /? SCHTASKS /Change /? SCHTASKS /ShowSid /?
我們可以建立、查詢、更改和刪除任務等,如果對相應的子命令不熟悉的話,如建立命令,可使用SCHTASKS /Create /? 來進一步檢視詳細的說明介紹。
2.檢視系統預設任務
使用schtasks 命令,或帶query引數,schtasks /query查詢系統當前執行任務。
C:\Users\Administrator>schtasks 資料夾: \ 任務名 下次執行時間 模式 ======================================== ====================== =============== Adobe Acrobat Update Task 2019/9/2 11:00:00 就緒 SogouImeMgr N/A 就緒 sync-opensource 2019/9/2 11:30:00 就緒 WpsUpdateTask_Administrator 2019/9/2 9:23:46 就緒
...
3.建立定時執行任務
命令列下鍵入schtasks /create /?,檢視更為詳細的引數說明,僅列舉我們最為關心的幾個引數。
/TN taskname 以路徑\名稱形式指定對此計劃任務進行唯一標識的字串。 /TR taskrun 指定在這個計劃時間執行的程式的路徑和檔名。 例如: C:\windows\system32\calc.exe /SC schedule 指定計劃頻率。 ==> 建立計劃任務“EventLog”以開始執行 wevtvwr.msc SCHTASKS /Create /TN EventLog /TR wevtvwr.msc /SC ONEVENT 如每分鐘、每小時、每天、每星期 MINUTE: 1 到 1439 分鐘; HOURLY: 1 - 23 小時; DAILY: 1 到 365 天; WEEKLY: 1 到 52 周; /ST starttime 指定執行任務的開始時間。 時間格式為 HH:mm (24 小時時間),例如 14:30 表示2:30 PM。如果未指定 /ST,則預設值為當前時間。/SC ONCE 必需有此選項。
3.1建立任務
我們建立一個名為"sync-opensource",定期執行某個bat指令碼,在每天的11:30執行。建立該任務的命令如下。
schtasks /create /tn "sync-opensource" /tr "E:\PycharmProjects\opensource\sync.bat" /sc daily /st 11:30
4其它
4.1查詢指定任務
如查詢我們上面建立的sync-opensource任務。
C:\Users\Administrator>schtasks -query | find "sync-opensource" sync-opensource 2019/9/2 11:30:00 就緒
4.2刪除任務
可以使用如下命令,刪除指定的任務。
schtasks /delete /tr taskname
更多,請參考幫助文件。以上!
參考
https://tecadmin.net/crontab-in-linux-with-20-examples-of-cron-schedule/
https://www.cnblogs.com/peida/archive/2013/01/08/2850483.html
https://www.cnblogs.com/SZxiaochun/p/6370702.