Linux下的crontab的使用方法
如果提示:-bash: crontab: command not found,表示沒有安裝crontab,需要手動安裝。
安裝crontab:
1. 確認crontab是否安裝: 執行 crontab 命令如果報 command not found,就表明沒有安裝 2. 安裝 crontab 執行 yum install -y vixie-cron 3. 確認是否安裝成功: 執行 crontab -l 4. 看是否設定了開機自動啟動 chkconfig --list crond 5. 啟動crontab service crond start
Linux下定時任務程序:
ps -ef|grep cron
【命令格式】
1.命令格式:
crontab [-u user] file
crontab [-u user] [ -e | -l | -r ]
2.命令功能:
通過crontab 命令,我們可以在固定的間隔時間執行指定的系統指令或 shell script指令碼。時間間隔的單位可以是分鐘、小時、日、月、周及以上的任意組合。這個命令非常設合週期性的日誌分析或資料備份等工作。
3.命令引數:
-u user:用來設定某個使用者的crontab服務,例如,"-u ixdba"表示設定ixdba使用者的crontab服務,此引數一般有root使用者來執行。
file:file是命令檔案的名字,表示將file做為crontab的任務列表檔案並載入crontab。如果在命令列中沒有指定這個檔案,crontab命令將接受標準輸入(鍵盤)上鍵入的命令,並將它們載入crontab。
-e:編輯某個使用者的crontab檔案內容。如果不指定使用者,則表示編輯當前使用者的crontab檔案。
-l:顯示某個使用者的crontab檔案內容,如果不指定使用者,則表示顯示當前使用者的crontab檔案內容。
-r:從/var/spool/cron目錄中刪除某個使用者的crontab檔案,如果不指定使用者,則預設刪除當前使用者的crontab檔案。
-i:在刪除使用者的crontab檔案時給確認提示。
預設情況下,系統所有使用者都可以使用crond服務。如需對crond服務的使用加限制,可以使用配置檔案/etc/cron.allow和 /etc/cron.deny,望文生義,cron.allow是允許使用crond服務的使用者清單,cron.deny裡的使用者則相反
Crontab 內容格式:
min hour day month week command
即:"分 時 日 月 周 命令",共計6段,前5段都是時間,最後一段才是你要定期執行的指令。每段之間使用空格或者製表符分隔。
排程命令的規則:
欄位名稱 | 說明 | 取值範圍 |
分鐘 | 每小時的第幾分鐘執行 | 0-59 |
小時 | 每日的第幾個小時執行 | 0-23 |
日期 | 每月的第幾天執行 | 1-31 |
月曆 | 每年的第幾月執行 | 1-12 |
星期 | 每週的第幾天執行 | 0-6 |
命令名稱 | 欲執行的命令及引數 |
crontab命令中的一些常用特殊符號:
符號 | 說明 |
* | 表示任何時刻 |
, | 表示分割 |
- | 表示一個段,如第二段裡: 1-5,就表示1到5點 |
/n | 表示每個n的單位執行一次,如第二段裡,*/1, 就表示每隔1個小時執行一次命令。也可以寫成1-23/1. |
例項:
crontab -e開啟編輯介面:
10 * * * * /user/bin/start :每個小時的10分執行指令碼
0 2 * * * /user/bin/start : 每天的2:00執行指令碼
0 2 5 * * /user/bin/start :每個月5號的2:00執行指令碼
0 2 5 3 * /user/bin/start : 每年3月5號的2:00執行指令碼 (月可以用數字,也可以用英文縮寫如mar代替)
0 2 5 3 1 /user/bin/start : 每年3月5號和每逢週一的2:00 執行指令碼(星期可以用數字或縮寫代替,如mon)
*/10 * * * * /user/bin/start :每10分鐘執行一次指令碼
* 0-10/2 * * * /user/bin/start: 每天的0點到10點每2小時執行一次指令碼
如果要精確到秒級執行,可以這樣寫:
* * * * * sleep 10; /user/bin/start 每10秒執行一次指令碼