簡介
創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站設(shè)計、成都網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的宜昌網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
at定時任務(wù),指定一個時間執(zhí)行一個任務(wù),只能執(zhí)行一次。需要安裝at服務(wù),apt-get install at;
創(chuàng)建at任務(wù)
創(chuàng)建at任務(wù)方式有兩種,從文件輸入和從控制臺輸入。以下分別用兩種方式創(chuàng)建1分鐘后將當(dāng)前時間寫入 home/result 文件的命令
1、從文件輸入
2、從命令行輸入
注意此處的是ctrl+d 按鍵。
atq 和 atrm命令
atq查看at定時隊(duì)列命令,atrm刪除某個定時任務(wù)命令.
附錄
1、at時間定義
at允許使用一套相當(dāng)復(fù)雜的指定時間的方法。?
1)能夠接受在當(dāng)天的hh:mm(小時:分鐘)式的時間指定。假如該時間已過去,那么就放在第二天執(zhí)行。?例如:04:00?
2)能夠使用midnight(深夜),noon(中午),teatime(飲茶時間,一般是下午4點(diǎn))等比較模糊的詞語來指定時間。?
3)能夠采用12小時計時制,即在時間后面加上AM(上午)或PM(下午)來說明是上午還是下午。?例如:12pm?
4)能夠指定命令執(zhí)行的具體日期,指定格式為month day(月 日)或mm/dd/yy(月/日/年)或dd.mm.yy(日.月.年),指定的日期必須跟在指定時間的后面。?例如:04:00 2009-03-1?
5)能夠使用相對計時法。指定格式為:now + count time-units ,now就是當(dāng)前時間,time-units是時間單位,這里能夠是minutes(分鐘)、hours(小時)、days(天)、weeks(星期)。count是時間的數(shù)量,幾天,幾小時。?例如:now + 5 minutes 04pm + 3 days?
6)能夠直接使用today(今天)、tomorrow(明天)來指定完成命令的時間。
如果必須使用命令的話,一般會可at命令。
定時任務(wù),指定一個時間執(zhí)行一個任務(wù),只能執(zhí)行一次。
語法:#
at
[參數(shù)]
[時間]
輸入要執(zhí)行的任務(wù)命令后按Ctrl+d退出即可。
常見參數(shù):
-m
:當(dāng)指定的任務(wù)被完成之后,將給用戶發(fā)送郵件,即使沒有標(biāo)準(zhǔn)輸出
-I
:atq的別名
-d
:atrm的別名
-v
:顯示任務(wù)將被執(zhí)行的時間
-c
:打印任務(wù)的內(nèi)容到標(biāo)準(zhǔn)輸出
-V
:顯示版本信息
-q
:后面加列隊(duì)
使用指定的列隊(duì)
-f
:后面加文件
從指定文件讀入任務(wù)而不是從標(biāo)準(zhǔn)輸入讀入
-t
:后面時間參數(shù)
以時間參數(shù)的形式提交要運(yùn)行的任務(wù)
注:該命令的功能實(shí)現(xiàn)需要atd服務(wù)
如果需要長期定時或周期性的執(zhí)行某個任務(wù),則需要使用crontab,編寫cron腳本來實(shí)現(xiàn)。同樣,負(fù)責(zé)安裝腳本執(zhí)行任務(wù)的服務(wù)一般叫做crond。具體使用方法篇幅較長,請自行百度。
linux
at
命令詳解
使用方式
:
at
-V
[-q
queue]
[-f
file]
[-mldbv]
TIME
說明
:
at
可以讓使用者指定在
TIME
這個特定時刻執(zhí)行某個程序或指令,TIME
的格式是
HH:MM其中的
HH
為小時,MM
為分鐘,甚至你也可以指定
am,
pm,
midnight,
noon,
teatime(就是下午
4
點(diǎn)鍾)等口語詞。
如果想要指定超過一天內(nèi)的時間,則可以用
MMDDYY
或者
MM/DD/YY
的格式,其中
MM
是分鐘,DD
是第幾日,YY
是指年份。另外,使用者甚至也可以使用像是
now
+
時間間隔來彈性指定時間,其中的時間間隔可以是
minutes,
hours,
days,
weeks。
另外,使用者也可指定
today
或
tomorrow
來表示今天或明天。當(dāng)指定了時間并按下
enter
之后,at
會進(jìn)入交談模式并要求輸入指令或程序,當(dāng)你輸入完后按下
ctrl+D
即可完成所有動作,至于執(zhí)行的結(jié)果將會寄回你的帳號中。
參數(shù)
:
-V
:
印出版本編號
-q
:
使用指定的佇列(Queue)來儲存,at
的資料是存放在所謂的
queue
中,使用者可以同時使用多個
queue,而
queue
的編號為
a,
b,
c...
z
以及
A,
B,
...
Z
共
52
個
-m
:
即使程序/指令執(zhí)行完成后沒有輸出結(jié)果,
也要寄封信給使用者
-f
file
:
讀入預(yù)先寫好的命令檔。使用者不一定要使用交談模式來輸入,可以先將所有的指定先寫入檔案后再一次讀入
-l
:
列出所有的指定
(使用者也可以直接使用
atq
而不用
at
-l)
-d
:
刪除指定
(使用者也可以直接使用
atrm
而不用
at
-d)
-v
:
列出所有已經(jīng)完成但尚未刪除的指定
Linux下,有兩個命令可以用來作為計劃任務(wù)而執(zhí)行,
要使用一次性任務(wù)計劃,linux必須要有負(fù)責(zé)這個計劃任務(wù)的服務(wù),那就是atd服務(wù)
但是并非所有的linux distribution都默認(rèn)會打開,我們需要手動激活愛聽的任務(wù)
如果服務(wù)未安裝,則需要手動安裝
#:yum install - y at 或 #:apt-get install at
如果擔(dān)心啟動是否執(zhí)行OK的話,可使用命令查看:
#:ps aux |grep atd
或者使用
systemctl status atd
# 查閱一下 atd 目前的狀態(tài),Active 狀態(tài)應(yīng)是 running
使用 at 這個指令來產(chǎn)生所要運(yùn)行的工作,并 將這個工作以文本文件的方式寫入 /var/spool/cron/atjobs/ 目錄內(nèi),該工作便能等待 atd 這個服務(wù)的取用與執(zhí)行了。 不過,因?yàn)榘踩睦碛桑⒉皇撬械娜硕伎梢赃M(jìn)行 at 工作調(diào)度!
at 的使用限制是利用 /etc/at.allow 與 /etc/at.deny 這兩個文件來進(jìn)行的! 加上這兩個文件后,at 的工作情況其實(shí)是這樣的:
在一般的 distributions 當(dāng)中,由于假設(shè)系統(tǒng)上的所有用戶都是可信任的,因此系統(tǒng)通常會保留一個空的 /etc/at.deny 文件,意思是允 許所有人使用 at 指令的意思 (您可以自行檢查一下該文件)。 不過,萬一你不希望有某些 使用者使用 at 的話,將那個使用者的帳號寫入 /etc/at.deny 即可! 一個帳號寫一行。
單一工作調(diào)度的進(jìn)行就使用 at 這個指令!這個指令的運(yùn)行非常簡單!將 at 加上一個時間即可!基本的語法如下:
事實(shí)上,當(dāng)我們使用 at 時會進(jìn)入一個 at shell 的環(huán)境來讓使用者下達(dá)工作指令,此時,建議 你最好使用絕對路徑來下達(dá)你的指令,比較不會有問題!由于指令的下達(dá)與 PATH 變量有關(guān), 同時與當(dāng)時的工作目錄也有關(guān)連 (如果有牽涉到文件的話),因此使用絕對路徑來下達(dá) 指令,會是比較一勞永逸的方法。 舉例來說,你在 /tmp 下達(dá) at now 然后輸入 mail -s "test" root .bashrc , 問一下,那個 .bashrc 的文件會是在哪里?答案是 /tmp/.bashrc !因?yàn)?at 在運(yùn)行時,會跑到當(dāng)時下達(dá) at 指令的那個工作目錄運(yùn)行!
要注意的是,如果在 at shell 內(nèi)的指令并沒有任何的訊息輸出,那么 at 默認(rèn)不會發(fā) email 給執(zhí)行者的。 如果你想要讓 at 無論如何都發(fā)一封 email 告知你是否執(zhí)行了指令,那么 可以使用“ at -m 時間格式 ”來下達(dá)指令! at 就會傳送一個訊息給執(zhí)行者,而不論該指令執(zhí)行有無訊息輸出了!
如果要在某某時刻,在我的終端機(jī)顯示出 Hello 的字樣,可以通過終端機(jī)的設(shè)備來處理!假如你在 tty1 登陸(在命令行里面輸入 tty 可以查看),則可以使用 echo "Hello" /dev/tty1 。
at 有另外一個很棒的優(yōu)點(diǎn), 由于 at 工作調(diào)度的使用上,系統(tǒng)會將該項(xiàng) at 工作獨(dú)立出你的 bash 環(huán)境中, 直接交給系統(tǒng)的 atd 程序來接管,因此,當(dāng)你下達(dá)了 at 的工作之后就可以立刻離線了, 剩下的工作就完全交 給 Linux 管理即可!所以如果有長時間的網(wǎng)絡(luò)工作時,使用 at 可以讓你免除網(wǎng)絡(luò)斷線后的困擾。
其實(shí) batch 是利用 at 來進(jìn)行指令的下達(dá)!只是加入一些控制參數(shù)而已。這個 batch 神奇的地方在于:他會在 CPU 的工作負(fù)載小于 0.8 的時候,才進(jìn)行你所下達(dá)的工作任務(wù)啦!
那什么是工作負(fù)載 0.8 呢?這個工作負(fù)載的意思是: CPU 在單一時間點(diǎn)所負(fù)責(zé)的工作數(shù)量。不是CPU 的使用率喔! 舉例來說,如果我有一只程序他需要一直使用 CPU 的運(yùn)算功能,那么此 時 CPU 的使用率可能到達(dá) 100% , 但是 CPU 的工作負(fù)載則是趨近于“ 1 ”,因?yàn)?CPU 僅負(fù)責(zé)一個工作!如果同時執(zhí)行這樣的程序兩支呢? CPU 的使用率還是 100% ,但是工作負(fù)載 則變成 2 了! 所以也就是說,當(dāng) CPU 的工作負(fù)載越大,代表 CPU 必須要在不同的工作之間進(jìn)行頻繁的工 作切換。 因?yàn)橐恢鼻袚Q 工作,所以會導(dǎo)致系統(tǒng)忙碌??! 系統(tǒng)如果很忙碌,還要額外進(jìn)行 at ,不太合理!所以才有 batch 指令的產(chǎn)生!
下面來實(shí)驗(yàn)一下 batch 好了!為了產(chǎn)生 CPU 較高的工作負(fù)載,我們用了 計算 pi 的腳本,連續(xù)執(zhí)行 4 次這只程序, 來仿真高負(fù)載,然后看看batch 的工作現(xiàn)象。
使用 uptime 可以觀察到 1, 5, 15 分鐘的“平均工作負(fù)載”量,因?yàn)槭瞧骄?,所以?dāng)我們?nèi)缟?表刪除掉四個工作后,工作負(fù)載不會立即降低, 需要一小段時間讓這個 1 分鐘平均值慢慢回 復(fù)到接近 0 ??!當(dāng)小于 0.8 之后的“整分鐘時間”時,atd 就會將 batch 的工作執(zhí)行掉了!
什么是“整分鐘時間”呢?不論是 at 還是 crontab,他們最小的時間單位是“分 鐘”,所以,基本上,他們的工作是“每分鐘檢查一次”來處理的! 就是整分 (秒為 0 的時候),同時,你會發(fā)現(xiàn)其實(shí) batch 也是使用 atq/atrm 來管理的!
當(dāng)前題目:包含linux7沒有at命令的詞條
分享網(wǎng)址:http://jinyejixie.com/article8/hpcpip.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、自適應(yīng)網(wǎng)站、網(wǎng)站制作、App開發(fā)、企業(yè)建站、網(wǎng)站改版
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)