linux命令之crontab
阿新 • • 發佈:2018-11-08
crontab命令被用來提交和管理使用者的需要週期性執行的任務,與windows下的計劃任務類似,當安裝完成作業系統後,預設會安裝此服務工具,並且會自動啟動crond程序,crond程序每分鐘會定期檢查是否有要執行的任務,如果有要執行的任務,則自動執行該任務。
1.crontab語法
crontab -e:編輯該使用者的計時器設定;
crontab -l:列出該使用者的計時器設定;
crontab -r:刪除該使用者的計時器設定;
crontab -u<使用者名稱稱>:指定要設定計時器的使用者名稱稱。
2.crontab檔案格式
minute hour day month week command
# For details see man 4 crontabs
# Example of job definition:
.---------------------------------- minute (0 - 59) 表示分鐘
| .------------------------------- hour (0 - 23) 表示小時
| | .---------------------------- day of month (1 - 31) 表示日期
| | | .------------------------- month (1 - 12) OR jan,feb,mar,apr ... 表示月份
| | | | .---------------------- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat 表示星期(0 或 7 表示星期天)
| | | | | .------------------- username 以哪個使用者來執行
| | | | | | .------ command 要執行的命令,可以是系統命令,也可以是自己編寫的指令碼檔案
| | | | | | |
* * * * * user-name command to be executed
/etc/crontab檔案包括下面幾行
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=""HOME=/
# run-parts
51 * * * * root run-parts /etc/cron.hourly
24 7 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
前四行是用來配置crond任務執行的環境變數,第一行SHELL變數指定了系統要使用哪個shell,這裡是bash,第二行PATH變數指定了系統執行命令的路徑,第三行MAILTO變數指定了crond的任務執行資訊將通過電子郵件傳送給root使用者,如果MAILTO變數的值為空,則表示不傳送任務執行資訊給使用者,第四行的HOME變數指定了在執行命令或者指令碼時使用的主目錄。
3.例項
* * * * * command#每1分鐘執行一次command
3,15 * * * * command#每小時的第3和第15分鐘執行
3,15 8-11 * * * command#在上午8點到11點的第3和第15分鐘執行
3,15 8-11 */2 * * command#每隔兩天的上午8點到11點的第3和第15分鐘執行
3,15 8-11 * * 1 command#每個星期一的上午8點到11點的第3和第15分鐘執行
45 4 1,10,22 * * /etc/init.d/smb restart#每月1、10、22日的4 : 45重啟smb
4.小結
- *表示任何時候都匹配
- “a,b,c” 表示a 或者 b 或者c 執行命令
- “a-b” 表示a到b 之間 執行命令
- “*/a” 表示每 a分鐘(小時等) 執行一次
- crontab 不能編輯系統級的 任務
crontab的最小執行時間是分鐘,如果我們需要每隔20秒執行一次呢?如何實現?
我們可以把20秒這個時間寫入到一個檔案中例如: /tmp/cron.txt 檔案
*/1 * * * * data >> /tmp/cron.txt
*/1 * * * * sleep 30s;data >> /tmp/cron.txt