定時任務調度
任務調度:是指系統在某個時間執行的特定的命令或程序
任務調度分類
- 系統工作:有些重要的工作必須周而復始的執行
- 個別用戶工作:個別用戶可能希望執行某些程序
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