用戶使用Linux at命令在指定時刻執行指定的命令序列。也就是說,該命令至少需要指定一個命令、一個執行時間才能夠正常運行。Linux at命令能夠只指定時間,也能夠時間和日期一起指定。需要注意的是,指定時間有個系統判別問題。
比如說:用戶現在指定了一個執行時間:凌晨3:20,而發出Linux at命令的時間是頭天晚上的20:00,那麼究竟是在哪一天執行該命令呢?假如用戶在3:20以前仍然在工作,那麼該命令將在這個時候完成;假如用戶3:20以前就退出了工作狀態,那麼該命令將在第二天凌晨才得到執行。下面是Linux at命令的語法格式:
at [-V] [-q 隊列] [-f 文檔名] [-mldbv] 時間
at -c 作業 [作業...]
at允許使用一套相當復雜的指定時間的方法,實際上是將POSIX.2標准擴展了。他能夠接受在當天的hh:mm(小時:分鐘)式的時間指定。假如該時間已過去,那麼就放在第二天執行。當然也能夠使用midnight(深夜),noon(中午),teatime(飲茶時間,一般是下午4點)等比較模糊的詞語來指定時間。用戶還能夠采用12小時計時制,即在時間後面加上AM(上午)或PM(下午)來說明是上午還是下午。也能夠指定命令執行的具體日期,指定格式為month day(月 日)或mm/dd/yy(月/日/年)或dd.mm.yy(日.月.年)。指定的日期必須跟在指定時間的後面。
上面介紹的都是絕對計時法,其實還能夠使用相對計時法,這對於安排不久就要執行的命令是很有好處的。指定格式為:now + count time-units ,now就是當前時間,time-units是時間單位,這裡能夠是minutes(分鐘)、hours(小時)、days(天)、weeks(星期)。count是時間的數量,究竟是幾天,還是幾小時,等等。更有一種計時方法就是直接使用today(今天)、tomorrow(明天)來指定完成命令的時間。下面通過一些例子來說明具體用法。
[例2] 指定在今天下午5:30執行某命令。假設現在時間是中午12:30,1999年2月24日,其命令格式如下:
at 5:30pm
at 17:30
at 17:30 today
at now + 5 hours
at now + 300 minutes
at 17:30 24.2.99
at 17:30 2/24/99
at 17:30 Feb 24
以上這些命令表達的意義是完全相同的,所以在安排時間的時候完萬能夠根據個人喜好和具體情況自由選擇。一般采用絕對時間的24小時計時法能夠避免由於用戶自己的疏忽造成計時錯誤的情況發生,例如上例能夠寫成:
at 17:30 2/24/99
這樣很清楚,而且別人也看得懂。
對於Linux at命令來說,需要定時執行的命令是從標准輸入或使用-f選項指定的文檔中讀取並執行的。假如Linux at命令是從一個使用su命令轉換到用戶shell中執行的,那麼當前用戶被認為是執行用戶,任何的錯誤和輸出結果都會送給這個用戶。但是假如有郵件送出的話,收到郵件的將是原來的用戶,也就是登錄時shell的任何者。
[例3]
$ at -f work 4pm + 3 days
在三天後下午4點執行文檔work中的作業。
$ at -f work 10am Jul 31
在7月31日上午10點執行文檔work中的作業。在任何情況下,終極用戶都能夠使用這個命令。對於其他用戶來說,是否能夠使用就取決於兩個文檔:/etc/at.allow和/etc/at.deny。假如/etc/at.allow文檔存在的話,那麼只有在其中列出的用戶才能夠使用Linux at命令;假如該文檔不存在,那麼將檢查/etc/at.deny文檔是否存在,在這個文檔中列出的用戶均不能使用該命令。假如兩個文檔都不存在,那麼只有終極用戶能夠使用該命令;空的/etc/at.deny文檔意味著所有的用戶都能夠使用該命令,這也是默認狀態。