1、原理示意圖

crontab進(jìn)行定時(shí)任務(wù)的設(shè)置。
2、概述
任務(wù)調(diào)度:是指系統(tǒng)在某個(gè)時(shí)間執(zhí)行的特定的命令或程序。
任務(wù)調(diào)度分類(lèi):
1)、系統(tǒng)工作:有些重要的工作必須周而復(fù)始地執(zhí)行。如病毒掃描等。
2)、個(gè)別用戶工作:個(gè)別用戶可能希望執(zhí)行某些程序,比如mysql數(shù)據(jù)庫(kù)的備份。
3、基本語(yǔ)法
crontab [選項(xiàng)]
3.1、常用選項(xiàng)
| 選項(xiàng) | 說(shuō)明 |
|---|---|
-e |
編輯crontab定時(shí)任務(wù) |
-l |
查詢crontab任務(wù) |
-r |
刪除當(dāng)前用戶所有crontab任務(wù) |
4、快速入門(mén)
4.1、任務(wù)的要求
設(shè)置任務(wù)調(diào)度文件:/etc/crontab。
設(shè)置個(gè)人任務(wù)調(diào)度。執(zhí)行crontab -e命令。
接著輸入任務(wù)到調(diào)度文件
如:*/1 * * * * ls -l /etc/ >>/tmp/to.txt
意思說(shuō)每個(gè)小時(shí)每分鐘執(zhí)行ls -l /etc/>>/tmp/to.txt 命令
4.2、步驟如下
1)crontab -e
2)*/1 * * * * ls -l /etc/ >>/tmp/to.txt

3)當(dāng)保存后退出就開(kāi)始執(zhí)行這個(gè)腳本。

4)在每一分鐘都會(huì)自動(dòng)的調(diào)用ls -l /etc/>>/tmp/to.txt

4.3、參數(shù)細(xì)節(jié)說(shuō)明
5個(gè)占位符的說(shuō)明
| 項(xiàng)目 | 含義 | 范圍 |
|---|---|---|
| 第一個(gè)"*" | 一個(gè)小時(shí)當(dāng)中的第幾分鐘 | 0-59 |
| 第二個(gè)"*" | 一天當(dāng)中的第幾小時(shí) | 0-23 |
| 第三個(gè)"*" | 一個(gè)月中的第幾天 | 1-31 |
| 第四個(gè)"*" | 一年當(dāng)中的第幾月 | 1-12 |
| 第五個(gè)"*" | 一周當(dāng)中的星期幾 | 0-7(0和7都代表星期日) |
特殊符號(hào)的說(shuō)明
| 特殊符號(hào) | 含義 |
|---|---|
| * | 代表任何時(shí)間。比如第一個(gè)*就代表一小時(shí)中國(guó)每分鐘都執(zhí)行一次的意思 |
| , | 代表不連續(xù)的時(shí)間。比如"0 8,12,16 * * * 命令",就代表在每天的8點(diǎn)0分,12點(diǎn)0分,16點(diǎn)0分都執(zhí)行一次命令 |
| - | 代表連續(xù)的時(shí)間范圍。比如"0 5 * * 1-6"命令,代表子周一到周六的凌晨5點(diǎn)0分執(zhí)行命令 |
| */n | 代表每隔多久執(zhí)行一次。比如"*/10 * * * * "命令,代表每隔10分鐘就執(zhí)行一遍命令 |
特定時(shí)間執(zhí)行任務(wù)案例
| 時(shí)間 | 含義 |
|---|---|
| 45 22 * * * | 在22點(diǎn)45分執(zhí)行命令 |
| 0 17 * * 1命令 | 每周1的17點(diǎn)0分執(zhí)行命令 |
| 0 5 1,15 * * 命令 | 每月1號(hào)和15號(hào)的凌晨5點(diǎn)0分執(zhí)行命令 |
| 40 4 * * 1-5命令 | 每周一多周五的凌晨4點(diǎn)40分執(zhí)行命令 |
| */10 4 * * *命令 | 每天的凌晨4點(diǎn),每隔10分鐘執(zhí)行一次命令 |
| 0 0 1,15 * 1命令 | 每月1號(hào)和15號(hào),每周1的0點(diǎn)0分都會(huì)執(zhí)行命令。注意:星期幾和幾號(hào)最好不要同時(shí)出現(xiàn),因?yàn)樗麄兌x的都是天,非常容易讓管理員混亂。 |
5、任務(wù)調(diào)度的幾個(gè)應(yīng)用實(shí)例
5.1、案例1:每隔一分鐘,就將當(dāng)前的日期信息,追加到/tmp/mydate文件中
1)先編寫(xiě)一個(gè)文件/home/mytask1.sh
date>>/tmp/mydate
2)給mytask1.sh一個(gè)可以執(zhí)行權(quán)限
chmod 744 /home/mytask1.sh
3)crontab -e
4)*/1 * * * * /home/mytask1.sh
5)成功

5.2、案例2:每隔1分鐘,將當(dāng)前日期和日歷都最佳到/home/mycal文件中
1)、先編寫(xiě)一個(gè)文件/home/mytask2.sh
date >>/tmp/mycal
cal>>/tmp/mycal
2)、給mytash2.sh一個(gè)可以執(zhí)行的權(quán)限
chmod 744 /home/mytask2.sh
3)crontab -e
4)、*/1 * * * * /home/mytask2.sh
5)、保存并退出,定時(shí)執(zhí)行。
5.3、案例3:每天凌晨2:00將mysql數(shù)據(jù)庫(kù)testdb,備份到文件中mydb.bak
1)、先編寫(xiě)一個(gè)文件/home/mytask3.sh
/usr/local/mysql/bin/mysqldump -u root -proot testdb>/tmp/mydb.bak
2)、給mytash3.sh一個(gè)可以執(zhí)行權(quán)限
chmod 744 /home/mytask2.sh
3)crontab -e
4)、*/1 * * * * /home/mytask3.sh
5)、保存并退出,定時(shí)執(zhí)行。
6、crond相關(guān)指令
1)、crontab -r:終止任務(wù)調(diào)度。
2)、crontab -l:列出當(dāng)前有哪些任務(wù)調(diào)度
3)、service crond restart:重啟任務(wù)調(diào)度