【學習課程】:【【小白入門 通俗易懂】2021韓順平 一周學會Linux】 https://www.bilibili.com/video/BV1Sv411r7vd/?p=14&share_source=copy_web&vd_source=2c07d62293f5003c919b2df9b2e054 ...
【學習課程】:【【小白入門 通俗易懂】2021韓順平 一周學會Linux】 https://www.bilibili.com/video/BV1Sv411r7vd/?p=14&share_source=copy_web&vd_source=2c07d62293f5003c919b2df9b2e0549e
定時任務調度
一、crond 任務調度
基本介紹
crontab 進行定時任務的設置
-
概述
任務調度:是指系統在某個時間執行的特定的命令或程式。
任務調度分類:-
系統工作:有些重要的工作必須周而複始地執行。如病毒掃描等。
-
個別用戶工作:個別用戶可能希望執行某些程式,比如對ysq資料庫的備份。
-
-
基本語法
crontab [選項]
常用選項:
選項 | 描述 |
---|---|
-e | 編輯crontab定時任務 |
-l | 查詢crontab任務 |
-r | 刪除當前用戶所有的crontab任務 |
service crond restart
,重啟任務調度
-
快速入門
-
設置任務調度文件:/etc/crontab
-
設置個人任務調度。執行
crontab -e
命令。 -
接著輸入任務到調度文件
如:*/1 * * * * ls -l /etc/ > /tmp/to.txt
意思說每小時的每分鐘執行ls -l /etc/ > /tmp/to.txt
命令。然後保存退出。
-
crond 時間規則
不用特意去記,網上有cron表達式的生成工具。
例子:*/1 * * * * ls -l /etc/ > /tmp/to.txt
-
5個占位符說明:
項目 含義 範圍 第一個 "*" 一小時當中的第幾分鐘 0 - 59 第二個 "*" 一天當中的第幾小時 0 - 23 第三個 "*" 一個月當中的第幾天 1 - 31 第四個 "*" 一年當中的第幾月 1 - 12 第五個 "*" 一周當中的星期幾 0 - 7 (0和7都代表星期日) -
特殊符號說明
特殊符號 含義 * 代表任何時間。比如第一個 "*" 就代表一小時中每分鐘都執行一次的意思 , 代表不連續的時間。比如 0 8,12,16 * * * 命令
,就代表在每天的8點0分,12點0分,16點0分都執行一次命令- 代表連續的時間範圍。比如 0 5 * * 1-6 命令
,代表在周一到周六的凌晨5點0分執行命令*/n 代表每隔多久執行一次。比如 */10 * * * * 命令
,代表每隔10分鐘就執行一遍命令 -
特定時間執行任務案例
時間 含義 45 22 * * * 命令
在22點45分執行命令 0 17 * * 1 命令
每周1的17點0分執行命令 0 5 1,15 * * 命令
每月1號和15號的凌晨5點0分執行命令 40 4 * * 1-5 命令
每周1到周5的凌晨4點40分執行命令 */10 4 * * * 命令
每天的凌晨4點,每隔10分鐘執行一次命令 0 0 1,15 * 1 命令
每月1號和15號,每周1的0點0分都會執行命令。註意:星期幾和幾號最好不要同時出現,因為他們定義的都是天。非常容易讓管理員混亂。
應用實例
-
案例1: 每隔1分鐘,就將當前的日期信息,追加到/tmp/mydate文件中。
執行crontab -e
,輸入*/1 * * * * date >> /tmp/mydate
,保存退出。 -
案例2: 每隔1分鐘,將當前日期和日曆都追加到/home/mycal文件中。
步驟:
(1)vim /home/my.sh
寫入內容date >> /home/mycal
和cal >> /home/mycal
(2) 給 my.sh增加執行許可權,chmod u+x /home/my.sh
(3)crontab-e
增加*/1 * * * * /home/my.sh
-
案例3: 每天凌晨2:00 將mysql資料庫 testdb,備份到文件中。提示:指令為
mysqldump -u root -p 密碼 資料庫 >> /home/db.bak
步驟:(1)
crontab-e
(2)0 2 * * * mysqldump -u root -p root testdb >> /home/db.bak
二、at 任務調度
基本介紹
-
at命令是一次性定時計劃任務,at的守護進程atd會以後臺模式運行,檢查作業隊列來運行。
-
預設情況下,atd守護進程每60秒檢查作業隊列,有作業時,會檢查作業運行時間,如果時間與當前時間匹配,則運行此作業。
-
at命令是一次性定時計劃任務,執行完一個任務後不再執行此任務。
-
在使用at命令的時候,一定要保證atd進程的啟動,可以使用相關指令來查看,
ps -ef | grep atd
可以檢測atd是否在運行。
at命令格式
指令:at [選項] [時間]
Ctrl + D,結束at命令的輸入,輸入兩次
-
at命令選項
選項 含義 -m 當指定的任務被完成後,將給用戶發送郵件,即使沒有標準輸出 -I aq的別名 -d atrm的別名 -v 顯示任務將被執行的時間 -c 列印任務的內容到標準輸出 -V 顯示版本信息 -q <隊列> 使用指定的隊列 -f <文件> 從指定文件讀入任務而不是從標準輸入讀入 -t <時間參數> 以時間參數的形式提交要運行的任務 -
其他指令
-
atq
,查看系統中還未執行的工作任務; -
atrm 編號
,刪除已經設置的任務;
-
at時間定義
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
(明天)來指定完成命令的時間。
應用案例
-
案例1: 2天後的下午5點執行/bin/ls /home
-
案例2: 明天17點鐘,輸出時間到指定文件內比如/root/date100.log
-
案例3: 2分鐘後,輸出時間到指定文件內比如/root/date200.log