之前了解過一點crontab,前段時間比較閑,就熟悉了一下,今天總結記錄一下。
crontab命令常見于Unix和類Unix的操作系統之中,用于設置周期性被執行的指令。該命令從標準輸入設備讀取指令,并將其存放于"crontab"文件中,以供之后讀取和執行。
什么時候需要用到crontab呢?如下就是幾個很好的應用場景
- 每分鐘需要執行一個程序檢查系統運行狀態
- 每天凌晨需要對過去一天的業務數據進行統計
- 每個星期需要把日志文件備份
- 每個月需要把數據庫進行備份
安裝crontab
在ubuntu系統中的安裝如下:
sudo apt-get install cron
?
時間設置
# 文件格式說明 # ——分鐘 (0 - 59) # | ——小時 (0 - 23) # | | ——日 (1 - 31) # | | | ——月 (1 - 12) # | | | | ——星期 (0 - 7)(星期日=0或7) # | | | | | # * * * * * 被執行的命令
注:
- 在“星期域”(第五個域),0和7都被視為星期日。
- 不很直觀的用法:如果日期和星期同時被設定,那么其中的一個條件被滿足時,指令便會被執行。
- 前5個域稱之分時日月周,可方便個人記憶。
從第六個域起,指明要執行的命令。
?
crontab命令
crontab [ -u user ] [ -i ] { -e | -l | -r }(default operation is replace, per 1003.2)-e (edit user's crontab)-l (list user's crontab)-r (delete user's crontab)-i (prompt before deleting user's crontab)
?
crontab例子
每晚21:30重啟nginx
30 21 * * * service nginx restart
每月1, 10, 22日的4:45重啟nginx
45 4 1,10,22 * * service nginx restart
每月1到10日4:45重啟nginx
45 4 1-10 * * service nginx restart
每隔2分鐘重啟nginx服務器
*/2 * * * *?service nginx restart
1-59/2 * * * *?service nginx restart
晚上11點到早上7點之間,每隔一小時重啟nginx
0 23-7/1 * * * service nginx restart
每天18:00到23:00之間每隔30分鐘重啟nginx
0,30 18-23 * * *?service nginx restart
0-59/30 18-23 * * *?service nginx restart
小結
- *表示任何時候到匹配
- 可以用"A,B,C"表示A或者B或者C時執行命令
- 可以用"A-B"表示A到B之間時執行命令
- 可以用"*/A"表示每A分鐘(小時等)執行一次命令