2007年6月23日 星期六

at , atq , atrm

at 是一次性的排程指令 .
它不像 cron 和 anacron 會週而復始的執行 .
at 排程只執行一次 , 設定的時間到了它就執行 ,
執行完了就結束了 , 不會再執行第二次 .


要設定 at 排程 , 就直接下指令即可 , 指令格式如下 :


指令 工作時間
at time


time 這個欄位有下面幾種設法 :


time 代表意思
HH:MM 06:00 表示早上六點 , 18:00 表示晚上六點 .
MMDDYY
MM-DD-YY
MM/DD/YY
MM 代表 "月" 二碼 , DD 代表 "日" 二碼 , YY 代表 "年" 二碼 ,
"年" 也可以寫成四碼 .
其順序一定是 "月" "日" "年" , 中間可以用 "-" 或 "/" 隔開 .
如 : 062307 , 06-23-07 , 06/23/07 , 06232007 , .........
now + time-units  now 就是現在 , 再加上時間單元(time-units) ,
 時間單元可以為
 minutes(分), hours(小時), days(日), or weeks(週) .
如 :  now + 3minutes 或 now + 2days
 midnight  表示 "子夜" , 就是 "凌晨 12 點" 的意思 .
 noon  表示 "正午" , 就是 "中午 12 點" 的意思 .
 teatime  表示 "下午茶時間" , 這裡是為 "下午四點"
以下省略 在 Linux 上輸入 man  at  就可以查到更多用法了 .....
 .







要注意的是 :
            一定要指定時間 , 如 HH:MM or now , 後面才指定日期 , 日期部分可省略 .



好了 , 當輸入 at  time 後 ,  系統會秀出 at> 提示符號 ,
我們就可以在 at> 提示符號的後面 , 用指令告訴 at 排程的工作為何 .


若有多個指令要執行 , 可以輸入一個指令後 , 按下 "Enter" 換行來輸入下一個指令 ,
也可以用 ";" 來隔開前後兩個指令 .


當最後一個指令輸入完畢後 , 必須再按一次 "Enter" 讓游標換到下一個新行 ,
然後按鍵盤 Ctrl + D 來完成排程的指令 .


範例如下 :
等時間到了 , 它就會去執行了 .

 
怎麼知道工作已經排進排程了呢 ?
怎麼知道目前有幾個工作在排程中等待執行時間的到來呢 ?


atq 指令


要檢視等待中的工作 , 可執行 atq 指令 .


一行是一個工作排程 ,


第一欄是工作序號 ,
第二欄是執行日期 ,
第三欄是執行時間 ,
第四欄是工作等級 ,
第五欄是執行身份 .


這裡只看到工作預定執行的時間 , 但看不到工作內容 .....
找不到有什麼參數或指令可以看到 at 排程工作的內容 ,
還請有經驗的朋友 , 不吝賜教 .


其實 /var/spool/at/ 資料夾內的檔案有記錄 ,
有空 , 有興趣的話 , 可以去看看 .





atrm 指令


要刪除已經排進 at 排程的工作 , 可以用 atrm 指令 .


指令格式如下 :

指令 工作序號
atrm job


工作序號要用 atq 指令查詢 , 查詢結果的第一個欄位便是 .


以上面 atq 查詢的那個範例圖來說 ,
可以看到有兩個工作在等待中 , 序號分別是 4 和 9 ,
若要刪除 9 號工作 , 就用下面指令即可 .
atrm  9








就醬 .











沒有留言: