天天看點

Linux中系統cron

一、定期的任務執行,簡稱任務計劃

在這些指定的任務執行時,不會顯示到螢幕上,而是以郵件的方式發送給任務的發起者:mail

1.在未來的某個時間僅執行一次

使用"at"或者"batch"進行設定,他們兩個的使用方法和參數都一樣,這裡以"at"為例;

時間的表示法:HH:MM、NN/DD/YY或者在時間後面跟上AM/PM來表示上下午、或now+# ("#"表示幾分鐘或幾小時或幾天或幾周,其機關:min、hours、days、week)

在某個時間設定要執行的任務後使用"Ctrl+d",來送出任務。

#at -l 或 #atq      ---檢視目前任務計劃的清單

at -r JOB_NU  或atrm JOB_NU    ---移除尚未執行的任務

#at -r 1

#atrm 1

at -f JOB_FILE TIME    将多個任務寫進檔案中,在某個時間去讀取該檔案,以達到某個時間執行任務

#at -f ~/job/job.txt now+1min

2.在未來周期性的去執行一個任務

在中周期的執行任務分為兩類:

第一類:屬于系統任務,定義一些計劃,用于系統自身的日常維護和運作

例如"what is"的資料庫,就是系統定期的對其進行更新

其配置檔案是:/etc/crontab

内容:

SHELL=/bin/bash                    ---指定解釋器為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

該檔案内容分為7個字段:

 分鐘     小時    天      月     星期    任務執行的發起者   執行的任務

[00-59] [00-23] [01-31] [01-12] [00-07]      USERNAME         ROLE

其中:通配:"*"

非連續時間點:","    

如:每小時的15和45分鐘 ------>  15,45 * * * *

連續的時間點:"- "   

如:每天的淩晨3點的8-10分鐘 ------>  8-10 3 * * * 

每幾:"*/#"

如:每三分鐘執行一次 ------>  */3 * * * *

注:這個檔案中的指令基于bash外殼程式,是以當執行一些指令時需要指定其二進制檔案所在的路徑,這裡使用PATH指派,也可以在使用指令時寫上其絕對路徑,但要清楚的是這裡的PATH和bash中的PATH是兩個不同的概念。

第二類:屬于使用者定義的一些周期行任務

crontab 定義使用者的周期任務

參數:    -e:編輯計劃内容

          -l:列出計劃内容

          -r:移除所有的計劃内容

以上的三個參數直接操作的是作用于目前執行"crontab"指令的使用者,如:

#crontab -e        ---編寫周期執行的任務,儲存之後會在/var/spool/cron/下生成一個和使用者名同名的檔案,其檔案内容分為6個字段,和系統任務的字段一樣,隻是和系統任務比較缺少了任務的執行者這以字段

          -u:為某個使用者制定計劃内容

#crontab -u redhat -e        ---儲存結束後,檔案的名字将自動命名為redhat

注:所有的任務會按照預訂的周期運作,其前提必須是伺服器處于開機運作狀态。

3.anacron:檢查crontab中那些過期且沒有執行的任務,預設是關閉的

其配置檔案:/etc/anacrontab

# /etc/anacrontab: configuration file for anacron

# See anacron(8) and anacrontab(5) for details.

SHELL=/bin/sh                    ---指定解釋器為bash

MAILTO=root                    ---指定發送郵件的使用者

1       65      cron.daily              run-parts /etc/cron.daily

7       70      cron.weekly             run-parts /etc/cron.weekly

30      75      cron.monthly            run-parts /etc/cron.monthly

四個字段意義:

• 時間間隔:執行任務的時間間隔,機關為天。

• 等待時間:在時間間隔到期後,如果任務沒有順利執行,則會等待此處設定的時間,然後再次嘗試執行。

• 任務辨別:有關此任務的說明,它可包含任何非空格的字元(/除外),通常都用在anacron資訊中,或是此任務的時間戳檔案名。

• 指令:實際執行的任務。

當任務完成後,anacron會将此日期記錄在/var/spool/anacron目錄的Timestamp檔案中,預設的Timestamp檔案有三個:cron.daily,cron.monthly和cron.weekly

本文轉自 向陽草米奇 51CTO部落格,原文連結:http://blog.51cto.com/grass51/793051,如需轉載請自行聯系原作者