2011年11月30日 星期三

工作排程-at

工作排程種類
at  是個可以處理僅執行一次就結束排程的指令,不過要執行 at 時, 必須要有 atd 這個服務

crontab 設定的工作將會循環的一直進行!循環的時間為分、小時、每週、每月或每年等。crontab 除了可以使用指令執行外,亦可編輯 /etc/crontab 來支援。讓crontab可以啟動則是 crond 這個服務! 


at
sudo sysv-rc-conf atd on    # 開啟 atd run level 


語法:
at [-mldv] TIME
at -c 工作號碼
選項與參數:
-m  :當at工作完成後,即使沒有輸出訊息,亦以 email 通知使用者該工作已完成。
-l  :at -l 相當於 atq,列出目前系統上面的所有該使用者的 at 排程;
-d  :at -d 相當於 atrm ,可以取消一個在 at 排程中的工作;
-v  :可以使用較明顯的時間格式列出 at 排程中的工作列表;
-c  :可以列出後面接的該項工作的實際指令內容。

TIME:什麼時候要進行 at 這項工作,格式有:
HH:MM  (04:00) 在今日某時刻進行,若已超過,則明天的時間進行
HH:MM YYYY-MM-DD (04:00 2009-03-17)
HH:MM[am|pm] [Month] [Date] (04pm March 17)
HH:MM[am|pm] + number [minutes|hours|days|weeks] ( now + 5 minutes, 04pm + 3 days)

例:一

 at now + 5 minutes

進入編輯畫面
[ctrl] + d 就會出現 <EOF> 的字樣!代表結束!
job 1 at Wed Nov 30 22:27:00 2011    //編輯結束後,顯示第幾工作

範例二:將上述的第 1 項工作內容列出來查閱
at -c 1

範例三:於某時間關機
at 23:00 2011-03-17
at> /bin/sync
at> /bin/sync
at> /sbin/shutdown -h now
at> <EOT>
job 2 at Wed Nov 30 22:39:00 2011

使用 at 時會進入一個 at shell 的環境來下達工作指令,此時,最好使用絕對路徑來下達指令,比較不會有問題喔



atq
查詢目前主機上面有多少的 at 工作排程?


atrm   將第()個工作移除!
atrm 5  將的第 5 個工作移除!


batch:系統有空時才進行背景任務
batch 是利用 at 來進行指令的下達啦!只是加入一些控制參數而已。




安全設定
先找尋 /etc/at.allow 這個檔案,寫在這個檔案中的使用者才能使用 at ,沒有在這個檔案中的使用者則不能使用 at (即使沒有寫在 at.deny 當中);
 

如果 /etc/at.allow 不存在,就尋找 /etc/at.deny 這個檔案,若寫在這個 at.deny 的使用者則不能使用 at 

如果兩個檔案都不存在,那麼只有 root 可以使用 at 這個指令。

沒有留言:

張貼留言