在指定的時間運作作業
有時候,需要隻運作作業一次而不是定期運作。為此,應該使用 at 指令。要運作的指令是從 -f 選項指定的檔案讀取的,如果沒有使用 -f,那麼從 stdin 讀取。-m 選項向使用者發送郵件,即使指令沒有 stdout。-v 選項顯示運作作業的時間。這個時間也顯示在輸出中。
清單 5 給出一個運作 mycrontest.sh 腳本的示例。清單 6 顯示在運作作業之後通過郵件發送給使用者的輸出。注意,這裡的輸出比對應的 cron 作業輸出要簡單一些。
清單 5. 使用 at 指令
[ian@lyrebird ~]$ at -f mycrontest.sh -v 10:25
Sat Jul 7 10:25:00 2007
job 5 at Sat Jul 7 10:25:00 2007
清單 6. 來自 at 的作業輸出
From [email][email protected][/email] Sat Jul 7 10:25:00 2007
Date: Sat, 7 Jul 2007 10:25:00 -0400
From: Ian Shields <[email][email protected][/email]>
Subject: Output from your job 5
To: [email][email protected][/email]
It is now 10:25:00 on Saturday
時間的設定可以非常複雜。清單 7 給出幾個示例。參見 at 的手冊頁、/usr/share/doc/at/timespec 檔案或 /usr/share/doc/at-3.1.10/timespec 這樣的檔案(這個示例中的 3.1.10 是 at 包的版本号)。
清單 7. at 指令使用的時間值
[ian@lyrebird ~]$ at -f mycrontest.sh 10pm tomorrow
job 14 at Sun Jul 8 22:00:00 2007
[ian@lyrebird ~]$ at -f mycrontest.sh 2:00 tuesday
job 15 at Tue Jul 10 02:00:00 2007
[ian@lyrebird ~]$ at -f mycrontest.sh 2:00 july 11
job 16 at Wed Jul 11 02:00:00 2007
[ian@lyrebird ~]$ at -f mycrontest.sh 2:00 next week
job 17 at Sat Jul 14 02:00:00 2007
at 指令還有一個 -q 選項。随着隊列的增長,作業的 nice 值也會增長。 還有一個 batch 指令,它與 at 指令相似,但是作業隻在系統負載足夠低時運作。這些特性的細節參見手冊頁。
清單 8. 顯示排程的作業
ian@lyrebird ~]$ atq
16 Wed Jul 11 02:00:00 2007 a ian
17 Sat Jul 14 02:00:00 2007 a ian
14 Sun Jul 8 22:00:00 2007 a ian
15 Tue Jul 10 02:00:00 2007 a ian
删除排程的作業
可以使用 atrm 指令加作業号删除用 at 指令排程的一個或多個作業。多個作業應該用空白分隔