close

按此前往linux完整教學目錄

 

 

介紹:

所謂「例行性工作」,是指讓系統在指定時間自動執行的工作。依其性質分為「一次性工作」與「循環性工作」。顧名思義,一次性工作於指定時間執行之後便不會再執行,而循環性工程會因指定的時間間隔或是時間點來重複執行。

Linux中,系統本就有內建一些例行性工作,例如登錄檔的分析、暫存檔的管理、系統資料庫的更新等等。尤其若有在系統中架設伺服器,那麼例行的連線管理與分析更是不可或缺的。

 

  • 一次性工作

欲設定一次性工作,必須先開啟atd這個daemon(關於daemon,請看其他章節)。有些系統預設開啟atd,有些則預設不開啟。要手動開啟atd,即是輸入命令:

/etc/init.d/atd restart

即可開啟atd。但即使是這樣,在登出後仍會將atd關閉。要使系統在每次登入時都自動開啟atd,可輸入命令:chkconfig atd on

1. 利用at命令,來管理一次性工作:

(1) at -l:以清單的方式,列出目前所有尚未執行的一次性工作(命令:atq,也可以達到同樣的效果)。使用者只能看到自己安排的一次性工作,不過若是root,可以看到所有使用者安排的一次性工作。顯示的格式為:

工作編號   工作預定執行的時間   a 執行工作的使用者名稱

其中,工作編號是一個正整數,每一個工作都有屬於自己的工作編號

(2) at -c 工作編號:顯示擁有該工作編號之工作的「詳細資訊」,包括欲執行此工作者的UIDGID,以及該工作實際上的命令內容等。

(3) at 選項 時間:建立一次性工作的排程,即是在指定的時間到達時,執行指定的工作。

此命令在輸入之後,會產生子程序並出現指令輸入列,在指令輸入列輸入的指令,也就是一次性工作實際上的「工作內容」。若要終止輸入,可按<ctrl>+<d>。(用ubuntu測試時,一次性工作被建立後,會被放置在/var/spool/cron/atjobs目錄中。)

若「工作內容」在執行時,有產生標準輸出或標準錯誤輸出,並不會在螢幕上顯示出來(為了怕打擾到使用者),而是會用寄信的方式把輸出給寄到使用者的信箱。

選項,可以不寫,也可以是-m。如果寫了-m,那麼就算工作內容中沒有標準輸出,系統也會寄信給使用者,告知使用者工作完成。

時間的寫法可以是:

(-1) HH:MM:表示在當天的HH時、MM分時,執行工作。其中,HH的值從00~23MM的值從00~59

(-2) HH:MM yyyy-mm-dd:表示在西元yyyymmdd日的HH時、MM分時,執行工作。其中,mm的值從01~12dd的值從00~31

(-3) now+ N單位單位可以是minutes()hours()days()N則是正整數。表示在輸入at 選項 時間的當下過了N單位時間之後再執行命令,如:

at now+5minutes 表示在輸入此指令的當下過了五分鐘之後再執行命令。要注意,這個now,是代表at 選項 時間 這一行指令輸入的時間,卻不是「工作內容」輸入後、按下<ctrl>+<d>的時間。如果在輸入工作內容時,超過了指定的時間,那麼在按下<ctrl>+<d>時工作內容就會自動執行完成。

還要注意的是,時間的指定,其最小單位是「分鐘」,也就是說,秒數會被忽略。若用at now+NminutesN是正整數)這種方法來指定時間,不會真正等到N分後才執行工作。例如,假設now代表的時間是133322秒,而at now+Nminutes指定的時間就會是1333+N00秒!秒數被忽略了!

要注意,不管在指定執行時間到達時使用者位在哪個目錄,執行「工作內容」,都是在輸入at 選項 時間這個指令時的目錄下執行。

(4) at -d 工作編號:取消擁有該工作編號之工作,令其不要執行。命令:atrm 工作編號,也可以達到同樣的效果。

(5)系統對於at的使用有加以限制。有些使用者被允許利用at來管理一次性工作,而有些使用者可能因為某些行為表現不佳,而被禁用at。身為root可以用「白名單法」或「黑名單法」來賦予使用者使用at的權限。

(5-1) 白名單法:在/etc/at.allow這個檔案下,輸入使用者帳號。只有這些使用者能使用at命令。

(5-2) 黑名單法:在/etc/at.deny這個檔案下,輸入使用者帳號。只有這些使用者不能使用at命令。

通常,這兩個方法不會同時使用。比較常見的是只用黑名單法,也就是只使用/etc/at.deny這個檔案。

 

2. batch指令安排一次性工作:

batch 選項 時間

其中,選項時間的寫法與1.(3) at 選項 時間相同。這個指令也是在安排一次性工作,不過是在系統的CPU負載小於一定數值時才會執行工作內容(這個數值通常是0.8)。以免系統過分忙碌造成錯誤。

利用batch指令安排的工作,同樣可用at指令來檢視與管理。

 

 

上一篇:linux 備份指令

下一篇:linux 循環性工作

arrow
arrow
    創作者介紹
    創作者 埃伯 的頭像
    埃伯

    程式語言教學

    埃伯 發表在 痞客邦 留言(0) 人氣()