計劃任務 命令總結 例子

#修改當前用戶的計劃
crontab -e  

//01 * * * * 不能留有空格
01 * * * * /home/zlb/mysql_dump/backup -run >> /home/zlb/mysql_dump/logs/backup_log.txt
#*/1 * * * * ls >> ~/ls.txt

#重啓

/etc/init.d/cron restart

-----------------------------------------------------------------------------------------------------------------------------

cron是一個linux下的定時執行工具,可以在無需人工干預的情況下運行作業。由於Cron 是Linux的內置服務,但它不自動起來,可以用以下的方法啓動、關閉這個服務:
service crond start //啓動服務
service crond stop //關閉服務
service crond restart //重啓服務
service crond reload //重新載入配置
你也可以將這個服務在系統啓動的時候自動啓動:


chkconfig crontab on


現在Cron這個服務已經在進程裏面了,我們就可以用這個服務了,Cron服務提供以下幾種接口供大家使用:
1.直接用crontab命令編輯
cron服務提供crontab命令來設定cron服務的,以下是這個命令的一些參數與說明:
crontab -u //設定某個用戶的cron服務,一般root用戶在執行這個命令的時候需要此參數
crontab -l //列出某個用戶cron服務的詳細內容
crontab -r //刪除沒個用戶的cron服務
crontab -e //編輯某個用戶的cron服務
比如說root查看自己的cron設置:crontab -u root -l
再例如,root想刪除fred的cron設置:crontab -u fred -r
在編輯cron服務時,編輯的內容有一些格式和約定,輸入:crontab -u root -e
進入vi編輯模式,編輯的內容一定要符合下面的格式:*/1 * * * * ls >> /tmp/ls.txt
任務調度的crond常駐命令
crond 是linux用來定期執行程序的命令。當安裝完成操作系統之後,默認便會啓動此任務調度命令。crond命令每分鍾會定期檢查是否有要執行的工作,如果有要執行的工作便會自動執行該工作。
1、linux任務調度的工作主要分爲以下兩類:
     *系統執行的工作:系統週期性所要執行的工作,如備份系統數據、清理緩存
     *個人執行的工作:某個用戶定期要做的工作,例如每隔10分鐘檢查郵件服務器是否有新信,這些工作可由每個用戶自行設置。
2.crontab命令選項:
     -u指定一個用戶,
     -l列出某個用戶的任務計劃,
     -r刪除某個用戶的任務,
     -e編輯某個用戶的任務
3.cron文件語法:
           分     小時   日       月       星期     命令
         0-59   0-23   1-31   1-12     0-6     command     (取值範圍,0表示週日一般一行對應一個任務)
4.記住幾個特殊符號的含義:
         "*"代表取值範圍內的數字,
         "/"代表"每",
         "-"代表從某個數字到某個數字,
         ","分開幾個離散的數字
一、任務調度設置文件的寫法
       可用crontab -e命令來編輯,編輯的是/var/spool/cron下對應用戶的cron文件,也可以直接修改/etc/crontab文件
具體格式如下:
       Minute Hour Day Month Dayofweek   command
       分鐘     小時   天     月       天每星期       命令
每個字段代表的含義如下:
     Minute             每個小時的第幾分鐘執行該任務
     Hour               每天的第幾個小時執行該任務
     Day                 每月的第幾天執行該任務
     Month             每年的第幾個月執行該任務
     DayOfWeek     每週的第幾天執行該任務
     Command       指定要執行的程序
     在這些字段裏,除了“Command”是每次都必須指定的字段以外,其它字段皆爲可選字段,可視需要決定。對於不指定的字段,要用“*”來填補其位置。
舉例如下:
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命令[即每月的1、11、21、31日是的6:30執行一次ls命令。 ]
每天7:50以root 身份執行/etc/cron.daily目錄中的所有可執行文件
50   7       *             *     *     root     run-parts     /etc/cron.daily   [ 注:run-parts參數表示,執行後面目錄中的所有可執行文件。 ]
二、新增調度任務
新增調度任務可用兩種方法:
         1、在命令行輸入: crontab -e 然後添加相應的任務,wq存盤退出。
         2、直接編輯/etc/crontab 文件,即vi /etc/crontab,添加相應的任務。
三、查看調度任務
         crontab -l //列出當前的所有調度任務
         crontab -l -u jp   //列出用戶jp的所有調度任務
四、刪除任務調度工作
         crontab -r   //刪除所有任務調度工作
五、任務調度執行結果的轉向
     例1:每天5:30執行ls命令,並把結果輸出到/jp/test文件中
         30 5 * * * ls >/jp/test 2>&1
     注:2>&1 表示執行結果及錯誤信息。
編輯/etc/crontab 文件配置cron  
cron服務每分鐘不僅要讀一次/var/spool/cron內的所有文件,還需要讀一次/etc/crontab,因此我們配置這個文件也能運用 cron服務做一些事情。用crontab配置是針對某個用戶的,而編輯/etc/crontab是針對系統的任務。此文件的文件格式是:  
SHELL=/bin/bash  
PATH=/sbin:/bin:/usr/sbin:/usr/bin  
MAILTO=root //如果出現錯誤,或者有數據輸出,數據作爲郵件發給這個帳號  
HOME=/ //使用者運行的路徑,這裏是根目錄  
# run-parts  
01   *   *   *   *     root run-parts /etc/cron.hourly         //每小時執行/etc/cron.hourly內的腳本  
02   4   *   *   *     root run-parts /etc/cron.daily           //每天執行/etc/cron.daily內的腳本  
22   4   *   *   0     root run-parts /etc/cron.weekly       //每星期執行/etc/cron.weekly內的腳本  
42   4   1   *   *     root run-parts /etc/cron.monthly     //每月去執行/etc/cron.monthly內的腳本  
大家注意"run-parts"這個參數了,如果去掉這個參數的話,後面就可以寫要運行的某個腳本名,而不是文件夾名了
例如:         1、在命令行輸入: crontab -e 然後添加相應的任務,wq存盤退出。
         2、直接編輯/etc/crontab 文件,即vi /etc/crontab,添加相應的任務
11 2 21 10 * rm -rf /mnt/fb 

cron是一個linux下的定時執行工具,可以在無需人工干預的情況下運行作業。由於Cron 是Linux的內置服務,但它不自動起來,可以用以下的方法啓動、關閉這個服務:

/sbin/service crond start //啓動服務
/sbin/service crond stop //關閉服務
/sbin/service crond restart //重啓服務
/sbin/service crond reload //重新載入配置

你也可以將這個服務在系統啓動的時候自動啓動:

在/etc/rc.d/rc.local這個腳本的末尾加上:
/sbin/service crond start

現在Cron這個服務已經在進程裏面了,我們就可以用這個服務了,Cron服務提供以下幾種接口供大家使用:

1.直接用crontab命令編輯

cron服務提供crontab命令來設定cron服務的,以下是這個命令的一些參數與說明:

crontab -u //設定某個用戶的cron服務,一般root用戶在執行這個命令的時候需要此參數

crontab -l //列出某個用戶cron服務的詳細內容

crontab -r //刪除沒個用戶的cron服務

crontab -e //編輯某個用戶的cron服務

比如說root查看自己的cron設置:crontab -u root -l

再例如,root想刪除fred的cron設置:crontab -u fred -r

在編輯cron服務時,編輯的內容有一些格式和約定,輸入:crontab -u root -e

進入vi編輯模式,編輯的內容一定要符合下面的格式:*/1 * * * * ls >> /tmp/ls.txt

這個格式的前一部分是對時間的設定,後面一部分是要執行的命令,如果要執行的命令太多,可以把這些命令寫到一個腳本里面,然後在這裏直接調用這個腳本就可以了,調用的時候記得寫出命令的完整路徑。時間的設定我們有一定的約定,前面五個*號代表五個數字,數字的取值範圍和含義如下:

分鐘 (0-59)

小時 (0-23)

日期 (1-31)

月份 (1-12)

星期 (0-6)//0代表星期天

除了數字還有幾個個特殊的符號就是"*"、"/"和"-"、",",*代表所有的取值範圍內的數字,"/"代表每的意思,"*/5"表示每5個單位,"-"代表從某個數字到某個數字,","分開幾個離散的數字。以下舉幾個例子說明問題:

每天早上6點

0 6 * * * echo "Good morning." >> /tmp/test.txt //注意單純echo,從屏幕上看不到任何輸出,因爲cron把任何輸出都email到root的信箱了。

每兩個小時

0 */2 * * * echo "Have a break now." >> /tmp/test.txt

晚上11點到早上8點之間每兩個小時,早上八點

0 23-7/2,8 * * * echo "Have a good dream:)" >> /tmp/test.txt

每個月的4號和每個禮拜的禮拜一到禮拜三的早上11點

0 11 4 * 1-3 command line

1月1日早上4點

0 4 1 1 * command line

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

2.編輯/etc/crontab 文件配置cron

cron服務每分鐘不僅要讀一次/var/spool/cron內的所有文件,還需要讀一次/etc/crontab,因此我們配置這個文件也能運用 cron服務做一些事情。用crontab配置是針對某個用戶的,而編輯/etc/crontab是針對系統的任務。此文件的文件格式是:

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root //如果出現錯誤,或者有數據輸出,數據作爲郵件發給這個帳號
HOME=/ //使用者運行的路徑,這裏是根目錄
# run-parts
01 * * * * root run-parts /etc/cron.hourly //每小時執行/etc/cron.hourly內的腳本

-----------------------------------------------------------------------------
02 4 * * * root run-parts /etc/cron.daily //每天執行/etc/cron.daily內的腳本
22 4 * * 0 root run-parts /etc/cron.weekly //每星期執行/etc/cron.weekly內的腳本
42 4 1 * * root run-parts /etc/cron.monthly //每月去執行/etc/cron.monthly內的腳本

大家注意"run-parts"這個參數了,如果去掉這個參數的話,後面就可以寫要運行的某個腳本名,而不是文件夾名了。

-----------------------------------------------------------------------------------------------------------------
在過去的一年裏,微軟的windows 7大行其道,不過Linux系統也越來越受到歡迎,你對Linux系統瞭解麼?你是Linux系統的應用者麼?本文爲你詳細介紹Linux計劃任務,爲你在學習Linux計劃任務時起一定的作用。

Linux有三種計劃任務:
at:指定一個時間執行一個任務 (適用一個或多個任務,執行一次後就不用)
cron:根據一個時間表自動執行任務 (使用一個或多個任務,週期性執行)
系統級別的計劃任務及其擴展anacron:在一個指定時間間隔錯過後自動執行任務

一、at服務:安排一個任務在未來執行,需要一個atd的系統後臺進程

#at now+2 minutes 回車
>輸入要執行的命令
>ctrl+d 結束輸入

atq;查詢當前的等待任務
用atq來查詢,已經運行的任務,就消失了。這就是at計劃任務的重點,只運行一次
atrm:刪除等待任務
啓動計劃任務後,如果不想啓動設定好的計劃任務可以使用atrm命令刪除。
格式:atrm 任務號
命令後面跟計劃任務編號,如果不跟,就會刪除這個用戶所有的計劃任務。

還可以進入到/var/spool/at目錄裏把計劃任務刪除,計劃任務的文件都保存在該目錄裏,可以用rm -f 文件名來刪除(以文件的形式刪除計劃任務,因爲計劃任務是以文件形式保存在該目錄中)

在通常情況下,超級用戶都可以使用這個命令。對於其他用戶來說,能否可以使用就取決於兩個文件:/etc/at.allow和/etc/at.deny

如果你要讓哪個用戶不能使用計劃任務,就直接把他的用戶名寫進去就可以了,一排只能寫一個。
同時寫入allow 及deny, 允許.

二、cron服務

上面已經簡單介紹了cron的一些進程和控制。下面我們來看看cron怎麼實現。
相對與at,cron的優點就是能夠週期性的執行某個命令,at卻只能執行一次
cron的後臺進程名字是crond ,cron也是system V的服務,所以我們可以service crond start|stop 來啓動和關閉此服務,也可以使用chkconfig或者ntsysv來選擇cron服務的默認開啓,這些命令在以前我們都講過的

#crontab -e              編輯當前用戶的cron表
#crontab -l               查看當前用戶的cron表
#crontab -r              刪除當前用戶的cron進程
#crontab -u 用戶名 以某用戶的身份來控制cron表
還有個重要的知識點,就是當用戶的計劃任務建立後是存放在/var/spool/cron這個目錄
當使用crontab -e編輯當前用戶的cron表後,會出現一個vi文件,cron的格式是這樣的。分成兩列,左邊是時間,右邊是運行的命令。時間是由5個部分組成。
例:
* * * * *          wall hello everyone
5 個星號分別代表:minute hour day-of-month month-of-year day-of-week 分時日月周 ,而wall hello everyone 這是命令內容。上面的意識是每分每小時每天每月每週廣播hello everyone。具體時間大家可以自己定義。如果要每兩分鐘發送就用*/2代替第一個*。也可以是用具體時間來表示。
Crontab –e 編輯的任務不要加入用戶名

第一個*星號代表個小時的第幾分鐘:minute 範圍是從0-59
第二個*星號代表每天的第幾個小時:hour 範圍是從0-23
第三個*星號代表每月的第幾個日:day-of-month 範圍從1-31
第四個*星號代表沒年的第幾個月:month-of-year 範圍從1-12
第五個*星號代表每週的星期幾:day-of-week 範圍從0-6,其中0表示星期日
用戶名:也就是執行程序要通過哪個用戶來執行,這個一般可以省略;
命令:執行的命令和參數。
如果我要表示9月10日25分執行ls var/spool/cron任務怎麼表示?
25 * 10 9 *         ls var/spool/cron

*/1 * * * 0 wall Hello redking.blog.51cto.com
*/   表示每多少分鐘執行一次哈~

當制定了cron任務後,可以用crontab -l查看, 也可以到/var/spool/cron/目錄查看。裏面的文件名字就是對應用戶的cron任務
可以使用crontab -r 來刪除當前用戶的cron

vim /etc/crontab 與crontab -e寫入的定時運行有什麼區別?
vim /etc/crontab:是系統級別定義的crontab,/etc/crontab的所有者和組都是root
crontab -e :是用戶自定義的crontab,是所有的用戶都可以寫入的
兩種方法記錄的位置不一樣,一個在/etc/ 另一個在/var/ 裏面。都被cron服務調用哈~

三、系統級別的計劃任務及其擴展anacrontab
anacrontab就是系統計劃任務的擴展文件:在一個指定時間間隔錯過後自動執行任務
這個是系統設置好了,清理系統垃圾或者是自動執行某些腳本的系統任務,一般我們做了解就行了,不要更改
配置文件是/etc/anaconrtab

   1. # /etc/anacrontab: configuration file for anacron  
   2. # See anacron(8) and anacrontab(5) for details.  
   3. SHELL=/bin/sh  
   4. PATH=/sbin:/bin:/usr/sbin:/usr/bin  
   5. MAILTO=root 
   6. #####格式是這樣的:period(頻率.天數) delay(延遲,分鐘) job-identifier command  
   7. 1       65      cron.daily              run-parts /etc/cron.daily  
   8. 7       70      cron.weekly             run-parts /etc/cron.weekly  
   9. 30      75      cron.monthly            run-parts /etc/cron.monthly 

SHELL:就是運行計劃任務的解釋器,默認是bash
PATH:執行命令的環境變量
MAILTO:計劃任務的出發者用戶
HOME:家目錄爲/
run-parts是一個腳本,在/usr/bin/run-parts,作用是執行一個目錄下的所有腳本/程序。
run-parts /etc/cron.hourly執行目錄/etc/cron.hourly/之下的所有腳本/程序.
run-parts下面就是運行的命令

第一行的意思是:每天開機65分鐘後就檢查cron.daily文件是否被執行了,如果今天沒有被執行就執行他
第二行的意思是:每隔7天開機後70分鐘檢查cron.weekly文件是否被執行了,如果一週內沒有被執行就執行他

和at差不多,就是/etc/cron.deny這個配置文件來控制, 同時寫入allow 及deny, 允許.以上就是Linux計劃任務。

 

 

crontab文件的一些例子:

30 21 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每晚的21:30重啓lighttpd 。

45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每月1、10、22日的4 : 45重啓lighttpd 。

10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每週六、週日的1 : 10重啓lighttpd 。

0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示在每天18 : 00至23 : 00之間每隔30分鐘重啓lighttpd 。

0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每星期六的11 : 00 pm重啓lighttpd 。

* */1 * * * /usr/local/etc/rc.d/lighttpd restart
每一小時重啓lighttpd

* 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart
晚上11點到早上7點之間,每隔一小時重啓lighttpd

0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart
每月的4號與每週一到週三的11點重啓lighttpd

0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart
發佈了16 篇原創文章 · 獲贊 0 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章