詳述Linux后臺運行命令(二)
Linux后臺運行命令第二講,這里介紹at命令,這個命令與cron有一定的關系,這里還會詳細介紹at命令的使用方法。我們應該對Linux后臺運行命令加以比較分析,可以看出at與cron和crontab命令的區別。
at
a t命令允許用戶向c r o n守護進程提交作業,使其在稍后的時間運行。一旦一個作業被提交, a t命令將會保留所有當前的環境變量,包括路徑,不象c r o n t a b,只提供缺省的環境。該作業的所有輸出都將以電子郵件的形式發送給用戶,除非你對其輸出進行了重定向,絕大多數情況下是重定向到某個文件中。
和c r o n t a b一樣,根用戶可以通過/ e t c目錄下的a t . a l l o w和a t . d e n y文件來控制哪些用戶可以使用a t命令,哪些用戶不行。不過一般來說,對a t命令的使用不如對c r o n t a b的使用限制那么嚴格。
a t命令的基本形式為:
at [-f script] [-m -l -r] [time] [date]
其中,
-f:script 是所要提交的腳本或命令。
-l:列出當前所有等待運行的作業。a t q命令具有相同的作用。
-r:清除作業。為了清除某個作業,還要提供相應的作業標識( I D);有些U N I X變體只接受a t r m作為清除命令。
-m:作業完成后給用戶發郵件。
time:at命令的時間格式非常靈活;可以是H、H H . H H M M、H H : M M或H : M,其中H和M分別是小時和分鐘。還可以使用a . m .或p . m .。
date:日期格式可以是月份數或日期數,而且a t命令還能夠識別諸如t o d a y、t o m o r r o w這樣的詞。
使用at命令提交命令或腳本
使用a t命令提交作業有幾種不同的形式,可以通過命令行方式,也可以使用a t命令提示符。一般來說在提交若干行的系統命令時,使用a t命令提示符方式,在提交s h e l l腳本時,使用命令行方式。
提示符方式:
以在a t命令后面跟上日期/時間并回車。然后就進入了a t命令提示符,這時只需逐條輸入相應的命令,然后按‘ < C T R L - D >’退出。
命令行方式:
at [-f script] [-m -l -r] [time] [date]
例一:提示符方式
# su sam
$ at 10:40
warning: commands will be executed using (in order) a) $SHELL b) login shell c) /bin/sh
at> find /etc -name "passwd" -print
at> <EOT>
job 1 at 2004-11-02 10:40
其中, < E O T >就是< C T R L - D >。在10:40系統將執行一個簡單的f i n d命令。提交的作業被分配了一個唯一標識job 1。該命令在完成以后會將全部結果以郵件的形式發送給我。
下面這些日期/時間格式都是a t命令可以接受的:
at 5.00am May23
at 11.20pm
at now +2 hour
at 9am tomorrow
at 15:00 May24
at now + 10 minutes
例二:命令行方式
如果希望向a t命令提交一個s h e l l腳本,使用其命令行方式即可。在提交腳本時使用- f選項。
如:
$ touch db_table.sh
$ at 3:00pm tomorrow -f db_table.sh
warning: commands will be executed using (in order) a) $SHELL b) login shell c) /bin/sh
job 3 at 2004-11-02 15:00
在上面的例子中,一個叫做d b _ t a b l e . s h的腳本將在2004-11-02 15:00運行。
還可以使用e c h o命令向a t命令提交作業:
$ echo find /etc -name "passwd" -print | at now +1 minute
warning: commands will be executed using (in order) a) $SHELL b) login shell c) /bin/sh
job 4 at 2004-11-01 19:07
列出所提交的作業
一個作業被提交后,可以使用at -l命令來列出所有的作業:
$ at -l
1 2004-11-02 10:40 a sam
3 2004-11-02 15:00 a sam
4 2004-11-01 19:07 a sam
其中,第一行是作業標識,后面是作業運行的日期/時間。最后一列a代表a t。
還可以使用a t q命令來完成同樣的功能,它是a t命令的一個鏈接。
直接>atq,相當于>at -l
當提交一個作業后,它就被拷貝到/ v a r / s p o o l / a t目錄中,準備在要求的時間運行。
# pwd
/var/spool/at
# ls -l
清除一個作業
清除作業的命令格式為:
atrm [job no] 或at -r [job no]
要清除某個作業,首先要執行at -l命令,以獲取相應的作業標識,然后對該作業標識使用at -r 命令,清除該作業。
$ at -l
1 2004-11-02 10:40 a sam
3 2004-11-02 15:00 a sam
4 2004-11-01 19:07 a sam
$at -r 3
$at -l
1 2004-11-02 10:40 a sam
4 2004-11-01 19:07 a sam
有些系統使用at-r [job no]命令清除作業。
Linux后臺運行命令at就介紹到這里。
【編輯推薦】