介紹 本篇主要介紹Linux定時任務命令crontab的用法,crontab是定時任務的命令,而crond則是定時任務的啟動服務。crontab的定時任務分為系統任務和用戶任務,其實二者沒有太大的區別。 啟動 在Centos中crond服務預設是自動啟動的,如果沒有啟動可以手動啟動,具體方法如下。 ...
介紹
本篇主要介紹Linux定時任務命令crontab的用法,crontab是定時任務的命令,而crond則是定時任務的啟動服務。crontab的定時任務分為系統任務和用戶任務,其實二者沒有太大的區別。
啟動
在Centos中crond服務預設是自動啟動的,如果沒有啟動可以手動啟動,具體方法如下。
查看定時任務是否啟動 service crond status 將定時任務加入系統自動啟動服務 chkconfig crond on
系統任務調度
系統定時任務一般用來執行一些系統方面的操作,比如日誌清理;系統的定時任務可以通過編輯/etc/crontab來設定。-
SHELL:系統要使用哪個shell
-
PATH:系統定時任務執行的命令的路徑,不要把這個PATH和系統環境變數認為是一樣,二者沒有關係,在系統環境變數裡面配置的路徑在這裡不能生效。
-
MAILTO:用來接收郵件的用戶,預設是root,郵箱的內容會保存在"/var/spool/mail/root"文件中。
-
HOME:系統定時任務的家目錄。
00 * * * * root run-parts /etc/cron.hourly
用戶任務調度
用戶的定時任務可以通過執行crontab命令來創建,一個用戶只會生成一個定時任務文件會以用戶名命名,用戶定義的定時任務都保存在“/var/spool/cron”目錄下,用戶任務調度和系統任務調度的時間段是一樣的,唯一的區別就是用戶任務調度不需要指定用戶名,而且也不能使用run-parts參數指定目錄。crontab命令選項
crontab [-u user] file
crontab [-u user] [ -e | -l | -r ]
-
-e:創建和編輯定時任務,預設是創建和編輯當前用戶的定時任務,只有root可以創建也編輯其它用戶的定時任務。
-
-l:列出當前用戶的定時任務,如果使用了-u參數指定了用戶那麼就是列出指定用戶的定時任務。
-
-r:刪除當前用戶的定時任務,如果使用了-u參數指定了用戶那麼就是刪除指定用戶的定時任務。
-
-i:在刪除用戶命令前加以提示,-i參數不能單獨使用需要結合-r參數以前使用。
crontab任務格式
crontab分別有五個時間段,以空格隔開分別如下:minute hour day month week command 順序:分 時 日 月 周
其中:
-
minute: 表示分鐘,可以是從0到59之間的任何整數。
-
hour:表示小時,可以是從0到23之間的任何整數。
-
day:表示日期,可以是從1到31之間的任何整數。
-
month:表示月份,可以是從1到12之間的任何整數。
-
week:表示星期幾,可以是從0到7之間的任何整數,這裡的0或7代表星期日。
-
command:要執行的命令,可以是系統命令,也可以是自己編寫的腳本文件。
在以上各個欄位中,還可以使用以下特殊字元:
-
星號(*):代表所有可能的值,例如month欄位如果是星號,則表示在滿足其它欄位的制約條件後每月都執行該命令操作。
-
逗號(,):可以用逗號隔開的值指定一個列表範圍,如:“1,2,5,7,8,9”,如果是month則表示這幾個月執行該命令。
-
中杠(-):可以用整數之間的中杠表示一個整數範圍,例如“2-6”表示“2,3,4,5,6”
-
正斜線(/):可以用正斜線指定時間的間隔頻率,例如“10-23/2”如果是指小時代表10點到23點每隔2個小時執行一次。例如*/1可以表示每隔一個小時執行一次。
其它限制:
/etc/cron.deny 該文件中所列用戶不允許使用crontab命令 /etc/cron.allow 該文件中所列用戶允許使用crontab命令 /var/spool/cron/ 所有用戶crontab文件存放的目錄,以用戶名命名
註意:預設的用戶的shell,path,mailto,home是沒有定義的,可以單獨定義用戶的這幾個變數否則可能會出現用戶找不到一些用戶軟體的命令,具體的定義方法可以參考系統任務的定義,主要還是SHELL、PATH。預設的用戶的這幾個變數信息如下:
X-Cron-Env:<SHELL=/bin/sh>
X-Cron-Env: <HOME=/home/chen>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=chen>
X-Cron-Env: <USER=chen>
例如我定義的用戶定時任務:
SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/mysql/bin MAILTO=chen HOME=/data/backup */5 01-06,13-18 * * * ./userbackup.sh test
上面定義了每天的1點到6點和13點到18點,每隔5分鐘執行命令。
註意:時間範圍01-06是指01:00-06:59
總結
定時任務很實用,而且實用方法也很多,有興趣可以慢慢研究。
備註: 作者:pursuer.chen 博客:http://www.cnblogs.com/chenmh 本站點所有隨筆都是原創,歡迎大家轉載;但轉載時必須註明文章來源,且在文章開頭明顯處給明鏈接。 《歡迎交流討論》 |