1. 程式人生 > >linux命令之crontab

linux命令之crontab

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 表示星期(07 表示星期天) | | | | | .------------------- 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