簡介
Linux crontab和Windows task schedules非常的相似岛马。Crontab可以用來在系統(tǒng)中定期的執(zhí)行任務驴娃。比如:寫了一個爬蟲需要每天早上八點執(zhí)行,就可以用到Crontab;安裝的Tomcat服務器需要每天凌晨重啟一次,也可以使用到Crontab〉翘裕總之蕉汪,幾乎所有的定時任務流译,我們都可以通過Crontab這個工具來完成。
安裝
yum install cronie`
Crontab在Linux上的結(jié)構(gòu)
[圖片上傳失敗...(image-1306c5-1537338963372)]
從左到右依次為:
[分鐘] [小時] [每月的某一天] [每年的某一月] [每周的某一天] [執(zhí)行的命令]
注意:請留意每個選項的取值范圍者疤。
如何 添加/編輯 Crontab
- 添加或更新crontab中的命令
crontab -e
默認情況下福澡,系統(tǒng)會編輯當前登錄用戶的crontab命令集合。需要編輯其他用戶的命令集合驹马,需要使用到如下的命令
crontab -u username -e
查看Crontab命令集合
- 查看當前系統(tǒng)登錄用戶的Crontab命令集合
crontab -l
- 查看其他用戶的Crontab命令集合
crontab -u username -l
20個超實用的Crontab使用實例
- 每天 02:00 執(zhí)行任務
0 2 * * * /bin/sh backup.sh
- 每天 5:00和17:00執(zhí)行任務
0 5,17 * * * /scripts/script.sh
- 每分鐘執(zhí)行一次任務
通常情況下竞漾,我們并沒有每分鐘都需要執(zhí)行的腳本(默默的想到了12306--)
* * * * * /scripts/script.sh
- 每周日 17:00 執(zhí)行任務
0 17 * * sun /scripts/script.sh
- 每 10min 執(zhí)行一次任務
*/10 * * * * /scripts/monitor.sh
- 在特定的某幾個月執(zhí)行任務
* * * jan,may,aug * /script/script.sh
- 在特定的某幾天執(zhí)行任務
0 17 * * sun,fri /script/scripy.sh
在每周五、周日的17點執(zhí)行任務
- 在某個月的第一個周日執(zhí)行任務
0 2 * * sun [ $(date +%d) -le 07 ] && /script/script.sh
- 每四個小時執(zhí)行一個任務
0 */4 * * * /scripts/script.sh
- 每周一窥翩、周日執(zhí)行任務
0 4,17 * * sun,mon /scripts/script.sh
- 每個30秒執(zhí)行一次任務
我們沒有辦法直接通過上訴類似的例子去執(zhí)行业岁,因為最小的是1min。但是我們可以通過如下的方法寇蚊。
* * * * * /scripts/script.sh
* * * * * sleep 30; /scripts/script.sh
- 多個任務在一條命令中配置
* * * * * /scripts/script.sh; /scripts/scrit2.sh
- 每年執(zhí)行一次任務
@yearly /scripts/script.sh
@yearly 類似于“0 0 1 1 *”笔时。它會在每年的第一分鐘內(nèi)執(zhí)行,通常我們可以用這個發(fā)送新年的問候仗岸。
- 每月執(zhí)行一次任務
@yearly /scripts/script.sh
- 每周執(zhí)行一次任務
@yearly /scripts/script.sh
- 每天執(zhí)行一次任務
@yearly /scripts/script.sh
- 每分鐘執(zhí)行一次任務
@yearly /scripts/script.sh
- 系統(tǒng)重啟時執(zhí)行
@reboot /scripts/script.sh
- 將 Cron 結(jié)果重定向的特定的賬戶
默認情況下允耿,cron 只會將結(jié)果詳情發(fā)送給 cron 被制定的用戶。如果需要發(fā)送給其他用戶扒怖,可以通過如下的方式:
# crontab -l
MAIL=bob
0 2 * * * /script/backup.sh
- 將所有的 cron 命令備份到文本文件當中
這是一個當我們丟失了cron命令后方便快速的一個恢復方式。
下面是利用這個方式恢復cron的一個小例子盗痒。(看看就行~)
首先:檢查當前的cron
# crontab -l
MAIL=rahul
0 2 * * * /script/backup.sh
然后:備份cron到文件中
# crontab -l > cron-backup.txt
# cat cron-backup.txt
MAIL=rahul
0 2 * * * /script/backup.sh
接著:移除當前的cron
# crontab -r
# crontab -l
no crontab for root
恢復:從text file中恢復
# crontab cron-backup.txt
# crontab -l
MAIL=rahul
0 2 * * * /script/backup.sh