linux系統中的排程延遲任務:at 命令

eric0435發表於2013-08-23
linux系統中的排程延遲任務:at 命令
主要概念
at命令可以使命令稍後執行
batch命令可以讓命令在機器負載較低的情況下執行
可以直接進入命令,或者以指令碼形式提交命令
作業中的標準輸出用郵件傳送給使用者
atq命令和atrm命令用來檢視和刪除當前的計劃任務

linux的守護程式是那些在後臺執行的程式,脫離控制終端,執行通常成鍵盤輸入無關的任務.守護程式經常與
網路服務相關聯,例如網頁伺服器(httpd)或ftp伺服器(vsftpd).其他守護程式處理系統任務,例如日誌守護程式(
syslogd)和電源管理守護程式(apmd).這個主要解釋說明兩個守護程式:一個允許使用者延遲任務(atd);另一個允許
使用者在固定間隔時間執行命令(crond).

守護程式像其他任何程式一樣,通常作為系統啟動序列的一部分被啟動,或者由根使用者啟動.因此,除非你特意尋找
它們,否則可能一直不知道它們的存在.

[root@sidatabase /]# ps aux | grep crond
root      3204  0.0  0.0 117204  1368 ?        Ss   Aug09   0:11 crond
root     21399  0.0  0.0 103244   868 pts/0    S+   14:07   0:00 grep crond
[root@sidatabase /]# ps aux | grep atd
rpcuser   2800  0.0  0.0  23340  1204 ?        Ss   Aug09   0:00 rpc.statd
root      3215  0.0  0.0  21448   464 ?        Ss   Aug09   0:00 /usr/sbin/atd
root     21405  0.0  0.0 103244   872 pts/0    S+   14:07   0:00 grep atd

有些守護程式作為根使用者執行,而有些守護程式為了安全起見,則以一個系統使用者的身份執行.在上面,crond守護程式
作為根使用者執行,而ntpd守護程式則作為系統使用者執行,如下所示.
[root@sidatabase /]# ps aux | grep ntpd
root     26538  0.0  0.0 103240   868 ?        14:22   0:00 ntpd -u ntp:ntp -p

atd守護程式
atd守護程式允許使用者提交稍後執行的作業,如"at 14:13 ".atd守護程式必須在執行時才能使用,使用者可以透過檢視
執行的程式列表來確定atd是否在執行.

root@sidatabase /]# ps aux | grep atd
rpcuser   2800  0.0  0.0  23340  1204 ?        Ss   Aug09   0:00 rpc.statd
root      3215  0.0  0.0  21448   548 ?        Ss   Aug09   0:00 /usr/sbin/atd
root     28604  0.0  0.0 103244   872 pts/0    S+   14:24   0:00 grep atd

在上面的輸出中第七列指出了與程式相關聯的終端.對使用者root的grep命令而言,終端是pts/2,這可甬指的網路shell
或X會話中的圖形終端.注意,atd守護程式沒有相關聯的終端.守護程式的一個定義特徵是,它結束與啟動它的終端之
間的聯絡.

用at命令提交作業
at命令用來向atd守護程式提交需要在特定時間執行的作業.要執行的命令可以作為指令碼提交(用-f命令列選項),也可以
透過標準輸入直接輸入.命令的標準輸出將用電子郵件的形式寄給使用者
at [[-f filename] | [-m]] time

規定一天中的時間可以用HH:MM格式,後面附加"am"或"pm",也可以用"midnight","noon"和"teatime"待詞語.日期也可以
用好幾種格式規定,其中mm/dd/yy

例如要在14:13這個時間生成一個名叫at.txt的檔案並在檔案中寫入"hello I am JingYong"資訊
[root@sidatabase /]# echo "hello I am JingYong " > at.txt | at 14:13
job 1 at 2013-08-23 14:13

檢視作業
[root@sidatabase /]# atq
1       2013-08-23 14:13 a root

刪除作業
[root@sidatabase /]# atrm 1


用batch延遲任務
batch命令與at命令一樣,用來延遲任務.與at命令不同的是,batch命令不在特定時間執行,而是等到系統不忙於別的
任務時執行.如果提交作業時機器不繁忙,可以立即執行作業.batch守護程式會監控系統的平均負載(load average)
等待它降到0.8以下,然後開始執行作業任務.

batch命令的語法與at命令的語法一模一樣,可以用標準輸入規定作業,也可以用-f命令列選項把作業作為batch檔案
來提交.如果規定了時間,batch會延遲到指定的時間開始觀察機器,那時,atd將開始監控系統的平均負載,並且在系統
不繁忙時執行作業.

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26015009/viewspace-769149/,如需轉載,請註明出處,否則將追究法律責任。

相關文章