定時任務排程
任務排程:是指系統在某個時間執行的特定的命令或程式
任務排程分類
- 系統工作:有些重要的工作必須周而復始的執行
- 個別使用者工作:個別使用者可能希望執行某些程式
crontab 進行任務的設定
基本語法
crontab [選項]
常用選項
-e
:編輯 crontab
定時任務
-l
:查詢crontab
任務
-r
:刪除當前使用者所有的crontab
任務
快速入門
設定任務排程檔案:/etc/crontab
設定個人任務排程:crontab -e
接著輸入任務到排程檔案
*/1**** ls -l /etc/ > /tmp/to.txt
每小時的每分鐘執行ls -l /etc/ > /tmp/to.txt
命令
細節說明
-
5個點位符的說明
- 第一個 "*":一小時當中的第幾分鐘 【0-59】
- 第二個 "*":一天當中的第幾小時 【0-23】
- 第三個 "*":一個月當中的第幾天 【1-31】
- 第四個 "*":一年當中的第幾月 【1-12】
- 第五個 "*":一週當中的周幾 【0-7】( 0 和 7 都代表週日)
-
特殊符號說明
*
:表示任何時間。如第一個"*",就代表一小時中每分鐘都執行一次,
:表示不連續的時間。如“ 0 8,12 * * * ”,就代表每天的8點0分,12點0分執行一次-
:表示連續的時間範圍。如“ 0 5 * * 1-6 ”,代表週一到週六凌晨5點0分執行*/n
:表示每隔多久執行一次。比如“ */1 * * * * ”,代表每隔1分鐘執行一次
crond 相關指令
終止任務排程
crontab -r
列出當前有那些任務排程
crontab -l
重啟任務排程
service crond restart
at 定時任務
基本介紹
at
命令是一次性定時計劃任務,at
的守護程式atd
會以後臺模式執行,檢查作業佇列來執行- 預設情況下,
atd
守護程式每 60 秒檢查作業佇列,有作業時,會檢查作業執行時間,如時間與當前時間匹配,則執行此作業 at
命令是一次性定時計劃任務,執行完一個任務後不再執行此任務- 在使用
at
命令時,一定要保證atd
程式的啟動 可以使用相關指令來檢視:ps -ef | grep atd
基本語法
at [選項] [時間]
Ctrl + D 結束at
命令的輸入,兩次
常用選項
-m
:當指定的任務被完成後,將給使用者傳送郵件,即使沒有標準輸出
-I
:atd
的別名
-d
:atrm
的別名
-v
:顯示任務將被執行的時間
-c
:列印任務的內容到標準輸出
-V
:顯示版本資訊
-q<佇列>
:使用指定的佇列
-f<檔案>
:從指定檔案讀入任務而不是從標準輸入讀入
-t<時間引數>
:以時間引數的形式提交要執行的任務
at 指定時間
- 接受在當天的 hh:mm(小時:分鐘)式的時間指定。假如該時間已過去,那麼就放在第二天執行。 例如:04:00
- 使用 midnight(深夜),noon(中午),teatime(飲茶時間,一般是下午 4 點)等比較模糊的詞語來指定時間。
- 採用 12 小時計時制,即在時間後面加上 AM(上午)或 PM(下午)來說明是上午還是下午。 例如:12pm
- 指定命令執行的具體日期,指定格式為 month day(月 日)或 mm/dd/yy(月/日/年)或 dd.mm.yy(日.月.年),指定的日期必須跟在指定時間的後面。 例如:04:00 2021-03-1
- 使用相對計時法。指定格式為:now + count time-units ,now 就是當前時間,time-units 是時間單位,這裡能夠是 minutes(分鐘)、hours(小時)、days(天)、weeks(星期)。count 是時間的數量,幾天,幾小時。 例如:now + 5 minutes
- 直接使用 today(今天)、tomorrow(明天)來指定完成命令的時間。
案例:2天后的下等5點執行 /bin/ls/home
$ at 5pm + 2 days
at> /bin/ls/home