linux(centos)中的cron計劃任務配置方法[詳細]

1. crontab命令選項shell


複製代碼bash

代碼以下:url


#crontab -u <-l, -r, -e>
spa

-u指定一個用戶
-l列出某個用戶的任務計劃
-r刪除某個用戶的任務
-e編輯某個用戶的任務rest

2. cron文件語法與寫法orm

可用crontab -e命令來編輯,編輯的是/var/spool/cron下對應用戶的cron文件,也能夠直接修改/etc/crontab文件。具體格式以下:

crontab

複製代碼字符串

代碼以下:it


Minute Hour Day Month Week command 
分鐘 小時 天 月 星期 命令 
0-59 0-23 1-31 1-12 0-6 command
io

每一個字段表明的含義以下: 

複製代碼

代碼以下:


Minute 每一個小時的第幾分鐘執行該任務 
Hour 天天的第幾個小時執行該任務 
Day 每個月的第幾天執行該任務 
Month 每一年的第幾個月執行該任務 
DayOfWeek 每週的第幾天執行該任務,0表示週日
Command 指定要執行的程序 、腳本或命令

在這些字段裏,除了「Command」是必須指定的字段之外,其它字段皆爲可選。對於不指定的字段,要用「*」來填補其位置。

3. 幾個特殊符號的含義

「*」表明取值範圍內的數字, 
「/」表明」每」, 
「-」表明從某個數字到某個數字, 
「,」分開幾個離散的數字

4. 關於cron配置文件/etc/crontab

cron 的主配置文件是 /etc/crontab,它包括下面幾行:


複製代碼

代碼以下:


SHELL=/bin/bash 
PATH=/sbin:/bin:/usr/sbin:/usr/bin 
MAILTO=root 
HOME=/
# run-parts 
01 * * * * root run-parts /etc/cron.hourly 
02 4 * * * root run-parts /etc/cron.daily 
22 4 * * 0 root run-parts /etc/cron.weekly 
42 4 1 * * root run-parts /etc/cron.monthly 

前四行是用來配置 cron 任務運行環境的變量:

SHELL 變量的值指定shell 環境(此處默認爲 bash shell);PATH 變量定義用來執行命令的程序路徑;cron 任務的輸出被郵寄給 MAILTO 變量定義的用戶名,若是 MAILTO 變量被定義爲空白字符串(MAILTO=""),電子郵件就不會被寄出;HOME 變量能夠用來設置在執行命令或腳本時使用的主目錄。

如在 /etc/crontab 文件中run-parts部分所示,它使用 run-parts 腳原本執行存在於 /etc/cron.hourly、/etc/cron.daily、/etc/cron.weekly 和 /etc/cron.monthly 目錄中的腳本,這些腳本被相應地按照預設時間在每小時、每日、每週、或每個月執行。這些目錄中的文件應該是 shell 腳本,而且具備可執行權限(chmod +x filename)。

若是某 cron 任務須要根據調度來執行,而不是每小時、每日、每週、或每個月地執行,它能夠被添加到/etc/cron.d目錄中。該目錄中的全部文件使用和 /etc/crontab 中同樣的語法。

每次編輯完某個用戶的cron設置後,cron自動在/var/spool/cron下生成一個與此用戶同名的文件,此用戶的cron信息都記錄在這個文件中,這個文件是不能夠直接編輯的,只能夠用crontab -e 來編輯。cron啓動後每過一份鍾讀一次這個文件,檢查是否要執行裏面的命令。所以此文件修改後不須要從新啓動cron服務。

5. 常見cron示例參考

5  * * * * ls 指定每小時的第5分鐘執行一次ls命令 
30 5 * * * ls 指定天天的 5:30 執行ls命令 
30 7 8 * * ls 指定每個月8號的7:30分執行ls命令 
30 5 8 6 * ls 指定每一年的6月8日5:30執行ls命令 
30 6 * * 0 ls 指定每星期日的6:30執行ls命令[注:0表示星期天,1表示星期1,以此類推,也能夠用英文來表示,sun表示星期天,mon表示星期一等。] 
30 3 10,20 * * ls 每個月10號及20號的3:30執行ls命令[注:「,」用來鏈接多個不連續的時段] 
25 8-11 * * * ls 天天8-11點的第25分鐘執行ls命令[注:「-」用來鏈接連續的時段] 
*/15 * * * * ls 每15分鐘執行一次ls命令 [即每一個小時的第0 15 30 45 60分鐘執行ls命令 ] 
30 6 */10 * * ls 每月中,每隔10天6:30執行一次ls命令[即每個月的一、十一、2一、31日是的6:30執行一次ls命令 ]

天天7:50以root 身份執行/etc/cron.daily目錄中的全部可執行文件 
50 7 * *  * root run-parts  /etc/cron.daily [ 注:run-parts參數表示,執行後面目錄中的全部可執行文件

第十、20、30分鐘輸出到/tmp/cron1.txt:
10,20,30 * * * * echo "第十、20、30分鐘輸出一次" >> /tmp/cron1.txt

以用戶lzw.me的身份每兩小時就運行某個程序:

0 */2 * * * lzw.me /usr/bin/somecommand >> /dev/null 2>&1

6. 特別提示

A、cron配置文件路徑

#vi /etc/crontab
B、重啓cron的方法

#/etc/rc.d/init.d/crond restart
Usage: /etc/rc.d/init.d/crond {start|stop|status|reload|restart|condrestart}

C、別忘了將腳本改爲可執行

chmod +x filename

相關文章
相關標籤/搜索