在windows系統中,windows提供了計畫任務這一功能,在控制面板 -> 效能與維護 -> 任務計畫,它的功能就是安排自動執行的任務。通過 『 新增任務計畫』 的一步步引導,則可建立乙個定時執行的任務。
在linux 系統中你可能已經發現了為什麼系統常常會自動的進行一些任務,這些任務到底是誰在支配他們工作的?在linux 系統如果你想要讓自己設計的備份程式可以自動在某個時間點開始在系統底下執行,而不需要手動來啟動它,又該如果處置呢?這些例行的工作可能又分為一次性定時工作與迴圈定時工作,在系統內又是哪些服務在負責?還有,如果你想要每年在老婆的生日前一天就發出一封信提醒自己不要忘記,linux系統下該怎麼做呢?
今天我們就來了解一下一次性定時計畫任務 at 命令的用法。
1. 命令格式:
at [引數] [時間]
2.命令功能:
在乙個指定的時間執行乙個指定任務,只能執行一次,且需要開啟 atd 程序(ps -ef | grep atd),
開啟用 /etc/init.d/atd start or testart ; 加入開機啟動項則需執行「 chkconfig --level 2345 atd on」.
3.命令引數:
-m 當指定的任務被完成之後,將給使用者傳送郵件,即使沒有標註輸出
-i atq 的別名
-d atrm的別名
-v 顯示任務將被執行的時間
-c 列印任務的內容到標準輸出
-v 大v
-q《佇列》 使用指定的列隊
-f《檔案》 從指定檔案讀入任務而不是從標準輸入讀入
-t《時間引數》 以時間引數的形式提交要執行的任務
at 允許使用一套相當複雜的指定時間的方法。他能夠接受在當天的 hh:mm(小時:分鐘)式的時間指定。假如該時間已過去,那麼就放在第二天執行,當然也能夠使用
midnight(午夜),noon (正午),teatime(下午茶,一般是指下午4點)比較模糊的詞語來指定時間。使用者還能夠採用12小時計時制,即在時間後面加上am(上午)或pm(下午)來說明是上午還是下午。也能夠指定命令執行的具體日期,指定格式為 month day (月 日)或mm/dd/yy(月/日/年)。指定的日期必須跟在指定時間的後面。上面介紹的都是絕對計時法,其實還能夠使用相對計時法,這對於安排不久就要執行的命令是很有好處的。
指定格式為:now + count time-units, now就是當前時間,time-units 是時間單位,它可以是 minutes分鐘,hours 小時, days天,weeks 星期。count 是時間的數量,究竟是幾天,還是幾小時,等待。更有一種計時方法就是直接使用 today 、 tomorrow 來指定完成命令的時間。
time:時間格式,這裡可以定義出什麼時候要進行 at 這項任務的時間,格式有:
例如:1) hh:mm 在今天的 hh:mm 時刻進行,若該時刻已經超過,則轉到明天的 hh:mm
2) hh:mm yyyy-mm-dd 強制規定在某年某月的某一天,這個特殊的時刻進行一項特殊任務,至於是什麼任務,自己定義吧。
3)now + 5 minutes 表示五分鐘之後, 04pm + 3 days 表示三天之後的下午四點
4.使用例項:
例項1:三天之後的下午 5點鐘執行 /bin/ls
命令:at 5pm+3days
例項2:明天17點,輸出時間到指定檔案內
命令:at 17:20 tomorrow
例項3:計畫任務設定後,在沒有執行之前我們可以用 atq 命令來檢視系統有沒有執行工作任務
命令: atq
例項4:刪除已經設定的任務
命令: atrm 7
例項5:顯示已經設定的任務內容
命令:at -c 8
5. atd 的啟動與 at 執行的方式:
1) atd 的啟動
要使用一次性計畫任務時,我們的 linux 系統上面必須要有負責這個技術任務的服務,那就是 atd 服務。不過並非所有的 linux distributions 都缺省會把他開啟的,所以,某些時刻我們需要手動將 atd 服務啟用才行。啟用的方法很簡單,就是這樣:
命令:/etc/init.d/atd start 直接啟動 atd 服務
/etc/init.d/atd restart 重啟 atd 服務
chkconfig atd on 預設開啟 345
2)at 的執行方式
既然是計畫任務,那麼應該會有任務執行的方式,並且將這些任務排進行程表中,那麼產生計畫任務的方式是怎麼進行的?事實上,我們使用 at 這個命令來產生所需要執行的計畫任務,並將這個計畫任務以文字檔的方式寫入 /var/spool/at/ 目錄內,該工作便能等待 atd 這個服務的取用和執行了。就這麼簡單。
不過,並不是所有的人都可以進行 at 計畫任務。為什麼?因為系統安全的原因,很多主機被所謂的攻擊破解之後,最常發現的就是他們的系統當中多了很多的黑客程式,這些程式非常可能運用一些計畫任務來執行或蒐集你的系統執行資訊,並定時的傳送給黑客。所有,除非是你認可的賬號,否則先不要讓他們使用 at 命令。那怎麼達到使用 at 的可控呢?
我們可以利用 /etc/at.allow 與 /etc/at.deny 這兩個檔案來進行 at 的使用限制。加上這兩個檔案後,at 的工作情況是這樣的:
先找尋 /etc/at.allow 這個檔案,寫在這個檔案中的使用者才能使用 at ,沒有在這個檔案中的使用者則不能使用 at (即使沒有寫在 at.deny 當中);
如果 /etc/at.allow 這個檔案不存在,就尋找 /etc/at.deny 這個檔案,若寫在這個 at.deny 的使用者則不能使用 at , 而沒有在這個 at.deny 檔案中的使用者,就可以使用 at 命令了。 ---------黑名單與白名單
如果這兩個檔案都不存在,那麼只有 root 可以使用 at 這個命令
透過這個說明,我們知道 /etc/at.allow 是管理較為嚴格的方式,而 /etc/at.deny 則較為鬆散(因為賬號沒有在該檔案中,就能夠執行 at 了。)在一般的 distributions 當中,由於假設系統上的所有使用者都是可信任的,因此系統通常會保留乙個空的 /etc/at.deny 檔案,意思是允許所有人使用 at 命令。不過,萬一你不希望某些使用者使用 at 的話,就可以將使用者的賬號 寫入 /etc/at.deny 中。乙個賬號寫一行。
每天乙個Linux命令
將我遇到的linux指令總結一下,不斷增加 1 sz和rz 一般來說,linux 伺服器大多是通過 ssh客戶端來進行遠端的登陸和管理的,使用 ssh登陸 linux ssh有關的兩個命令可以提供很方便的操作 sz 將選定的檔案傳送 send 到本地機器 rz 執行該命令會彈出乙個檔案選擇視窗,從本...
每天乙個linux命令
linux cmp命令 linux cmp命令用於比較兩個檔案是否有差異。當相互比較的兩個檔案完全一樣時,則該指令不會顯示任何資訊。若發現有所差異,缺省會標示出第乙個不同之處的字元和列數編號。若不指定任何檔名稱或是所給予的檔名為 則cmp指令會從標準輸入裝置讀取資料。語法cmp clsv i 字元數...
每天乙個 Linux 命令
head 與 tail 就像它的名字一樣的淺顯易懂,它是用來顯示開頭或結尾某個數量的文字區塊,head 用來顯示檔案的開頭至標準輸出中,而 tail 想當然爾就是看檔案的結尾。1 命令格式 head 引數 檔案 2 命令功能 head 用來顯示檔案的開頭至標準輸出中,預設head命令列印其相應檔案的...