at命令用法詳解
公司主營業(yè)務(wù):成都網(wǎng)站建設(shè)、做網(wǎng)站、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊有機(jī)會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)推出歙縣免費做網(wǎng)站回饋大家。
在linux系統(tǒng)中你可能已經(jīng)發(fā)現(xiàn)了為什么系統(tǒng)常常會自動的進(jìn)行一些任務(wù)?這些任務(wù)到底是誰在支配他們工作的?
在linux系統(tǒng)如果你想要讓自己設(shè)計的備份程序可以自動在某個時間點開始在系統(tǒng)底下運行,而不需要手動來啟動它,又該如何處置呢?
這些例行的工作可能又分為一次性定時工作與循環(huán)定時工作,在系統(tǒng)內(nèi)又是哪些服務(wù)在負(fù)責(zé)?
還有,如果你想要每年在老婆的生日前一天就發(fā)出一封信件提醒自己不要忘記,linux系統(tǒng)下該怎么做呢?
今天我們主要學(xué)習(xí)一下一次性定時計劃任務(wù)的at命令的用法!
1.命令格式:at[參數(shù)][時間]
2.命令功能:在一個指定的時間執(zhí)行一個指定任務(wù),只能執(zhí)行一次,且需要開啟atd進(jìn)程(ps -ef|grep atd查看,開啟用/etc/init.d/atd start or restart;開機(jī)即啟動則需要運行chkconfig --level 2345 atd on)。
3.命令參數(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列隊 使用指定的列隊
-f文件 從指定文件讀入任務(wù)而不是從標(biāo)準(zhǔn)輸入讀入
-t時間參數(shù) 以時間參數(shù)的形式提交要運行的任務(wù)
at允許使用一套相當(dāng)復(fù)雜的指定時間的方法。它能夠接受在當(dāng)天的hh:mm(小時:分鐘)式的時間指定。
假如該時間已過去,那么就放在第二天執(zhí)行。
當(dāng)然也能夠使用midnight(深夜),noon(中午),teatime(飲茶時間,一般是下午4點)等比較模糊的 詞語來指定時間。
用戶還能夠采用12小時計時制,即在時間后面加上AM(上午)或PM(下午)來說明是上午還是下午。
也能夠指定命令執(zhí)行的具體日期,指定格式為month day(月 日)或mm/dd/yy(月/日/年)或dd.mm.yy(日.月.年)。指定的日期必須跟在指定時間的后面。
上面介紹的都是絕對計時法,其實還能夠使用相對計時法,這對于安排不久就要執(zhí)行的命令是很有好處的。
指定格式為:now + count time-units ,
now就是當(dāng)前時間,time-units是時間單位,這里能夠是minutes(分鐘)、hours(小時)、days(天)、weeks(星期)。
count是時間的數(shù)量,究竟是幾天,還是幾小時,等等。 更有一種計時方法就是直接使用today(今天)、tomorrow(明天)來指定完成命令的時間。
time:時間格式,這里可以定義出什么時候要進(jìn)行 at 這項任務(wù)的時間,格式有:HH:MMx 04:00
在今日的 HH:MM 時刻進(jìn)行,若該時刻已超過,則明天的 HH:MM 進(jìn)行此任務(wù)。HH:MM YYYY-MM-DD ex 04:00 2009-03-17
強(qiáng)制規(guī)定在某年某月的某一天的特殊時刻進(jìn)行該項任務(wù)。 HH:MM[am|pm] [Month] [Date]ex 04pm March 17
也是一樣,強(qiáng)制在某年某月某日的某時刻進(jìn)行該項任務(wù) HH:MM[am|pm] + number [minutes|hours|days|weeks]
ex now + 5 minutes
ex 04pm + 3 days
就是說,在某個時間點再加幾個時間后才進(jìn)行該項任務(wù)。
inux at命令如何保存退出:輸入"at 指定的時間"之后回車,然后輸入要運行的命令,回車,按組合鍵Ctrl+D
4.使用實例:
4.1 三天后的下午5點鍾執(zhí)行/bin/ls
命令:at 5pm+3 days
[moiaopr@CNSZ443239 ~]$ at 5pm+3 days
at /bin/ls
at
at
job 9 at 2016-11-24 17:00
4.2 明天17點鐘,輸出時間到指定文件內(nèi)
命令:at 17:20 tomorrow
[moiaopr@CNSZ443239 ~]$ at 17:20 tomorrow
at ls test01.txt
at
job 10 at 2016-11-22 17:20
4.3 計劃任務(wù)設(shè)定后,在沒有執(zhí)行之前我們可以用atq命令來查看系統(tǒng)沒有執(zhí)行工作任務(wù)
命令:atq
[moiaopr@CNSZ443239 ~]$ atq
3 2016-11-24 17:00 a moiaopr
10 2016-11-22 17:20 a moiaopr
9 2016-11-24 17:00 a moiaopr
4 2016-11-21 22:00 a moiaopr
5 2016-11-24 17:00 a moiaopr
4.4 顯示已經(jīng)設(shè)置的任務(wù)內(nèi)容
命令:at -c 8
[moiaopr@CNSZ443239 ~]$ atq
11 2016-11-21 16:55 a moiaopr
[moiaopr@CNSZ443239 ~]$ at -c 11
!/bin/sh
atrun uid=4010 gid=3020
mail moiaopr 0
umask 27
......
4.5 刪除已經(jīng)設(shè)置的任務(wù)
命令:atrm 7
[moiaopr@CNSZ443239 ~]$ atq
3 2016-11-24 17:00 a moiaopr
9 2016-11-24 17:00 a moiaopr
4 2016-11-21 22:00 a moiaopr
5 2016-11-24 17:00 a moiaopr
6 2016-11-22 17:00 a moiaopr
1 2016-11-24 17:00 a moiaopr
7 2016-11-21 16:37 a moiaopr
2 2016-11-24 17:00 a moiaopr
[moiaopr@CNSZ443239 ~]$ atrm 9
[moiaopr@CNSZ443239 ~]$ atrm 7
[moiaopr@CNSZ443239 ~]$ atrm 6
[moiaopr@CNSZ443239 ~]$ atrm 5
[moiaopr@CNSZ443239 ~]$ atrm 4
[moiaopr@CNSZ443239 ~]$ atq
3 2016-11-24 17:00 a moiaopr
1 2016-11-24 17:00 a moiaopr
2 2016-11-24 17:00 a moiaopr
5.atd的啟動與at運行的方式:
5.1 atd 的啟動
要使用一次性計劃任務(wù)時,我們的 Linux 系統(tǒng)上面必須要有負(fù)責(zé)這個計劃任務(wù)的服務(wù),那就是 atd 服務(wù)。
不過的方法很簡單,就是這樣:
并非所有的 Linux distributions都默認(rèn)會把他打開的,所以,某些時刻我們需要手動將atd 服務(wù)激活才行。
激活
命令:
/etc/init.d/atd start
/etc/init.d/atd restart
說明:
/etc/init.d/atd start 沒有啟動的時候,直接啟動atd服務(wù)
/etc/init.d/atd restart 服務(wù)已經(jīng)啟動后,重啟atd服務(wù)
5.2 配置一下啟動時就啟動這個服務(wù),免得每次重新啟動都得再來一次
命令:
chkconfig atd on
輸出:
[root@localhost /]# chkconfig atd on
[root@localhost /]#
5.3 at 的運行方式
既然是計劃任務(wù),那么應(yīng)該會有任務(wù)執(zhí)行的方式,并且將這些任務(wù)排進(jìn)行程表中。那么產(chǎn)生計劃任務(wù)的方式是怎么進(jìn)行的?
事實上,我們使用at這個命令來產(chǎn)生所要運行的計劃任務(wù),并將這個計劃任務(wù)以文字檔的方式寫入/var/spool/at/目錄內(nèi),該工作便能等待 atd 這個服務(wù)的取用與運行了。就這么簡單。不過,并不是所有的人都可以進(jìn)行 at 計劃任務(wù)。為什么? 因為系統(tǒng)安全的原因。很多主機(jī)被所謂的攻擊破解后,最常發(fā)現(xiàn)的就是他們的系統(tǒng)當(dāng)中多了很多的黑客程序,這些程序非常可能運用一些計劃任務(wù)來運行或搜集你的系統(tǒng)運行信息,并定時的發(fā)送給黑客。 所以,除非是你認(rèn)可的帳號,否則先不要讓他們使用 at 命令。那怎么達(dá)到使用 at 的可控呢?
我們可以利用 /etc/at.allow 與 /etc/at.deny 這兩個文件來進(jìn)行 at 的使用限制。加上這兩個文件后, at 的工作情況是這樣的:
先找尋 /etc/at.allow 這個文件,寫在這個文件中的使用者才能使用 at ,沒有在這個文件中的使用者則不能使用 at (即使沒有寫在 at.deny 當(dāng)中);
如果 /etc/at.allow 不存在,就尋找 /etc/at.deny 這個文件,若寫在這個 at.deny 的使用者則不能使用 at ,而沒有在這個 at.deny 文件中的使用者,就可以使用 at 命令了。
如果兩個文件都不存在,那么只有 root 可以使用 at 這個命令。
透過這個說明,我們知道 /etc/at.allow 是管理較為嚴(yán)格的方式,而 /etc/at.deny 則較為松散 (因為帳號沒有在該文件中,就能夠運行 at 了)。在一般的 distributions 當(dāng)中,
由于假設(shè)系統(tǒng)上的所有用戶都是可信任的, 因此系統(tǒng)通常會保留一個空的 /etc/at.deny 文件,意思是允許所有人使用 at 命令的意思 (您可以自行檢查一下該文件)。
不過,萬一你不希望有某些使用者使用 at 的話,將那個使用者的帳號寫入 /etc/at.deny 即可! 一個帳號寫一行
之前說了使用crontab實現(xiàn)定時執(zhí)行任務(wù),假如我們只是想要讓特定任務(wù)運行一次,那么,這時候就要用到at監(jiān)控程序了。
一、at服務(wù)
cron是一個linux下 的定時執(zhí)行工具,可以在無需人工干預(yù)的情況下運行作業(yè)。
service atd start? ? //啟動服務(wù)
service atd ?stop? ???//關(guān)閉服務(wù)
service atd restart??//重啟服務(wù)
service atd reload? ?//重新載入配置
service atd status? ?//查看服務(wù)狀態(tài)?
二、at在配置文件:
at類似打印進(jìn)程,會把任務(wù)放到/var/spool/at目錄中,到指定時間運行它 。at命令相當(dāng)于另一個shell,運行at time命令時,它發(fā)送一個個命令,可以輸入任意命令或者程序。
三、參數(shù)詳解
at [-V] [-q x] [-f file] [-mldbv] time
at -c job ...
atq [-V] [-q x]
atrm [-V] job ...
-V : 印出版本編號?
-q : 使用指定的佇列(Queue)來儲存,at 的資料是存放在所謂的 queue 中,使用者可以同時使用多個 queue,而 queue 的編號為 a, b, c... z 以及 A, B, ... Z 共 52 個?
-m : 即使程序/指令執(zhí)行完成后沒有輸出結(jié)果, 也要寄封信給使用者?
-f file : 讀入預(yù)先寫好的命令檔。使用者不一定要使用交談模式來輸入,可以先將所有的指定先寫入檔案后再一次讀入?網(wǎng)絡(luò)應(yīng)用
-l : 列出所有的指定 (使用者也可以直接使用 atq 而不用 at -l)?
-d : 刪除指定 (使用者也可以直接使用 atrm 而不用 at -d)?
-v : 列出所有已經(jīng)完成但尚未刪除的指定?
at命令執(zhí)行流程
# at 2:05 tomorrow
at/home/kyle/do_job
at Ctrl+D
AT Time中的時間表示方法
-----------------------------------------------------------------------
時 間 例子 說明
-----------------------------------------------------------------------
Minute? ? at now + 5 minutes? ?任務(wù)在5分鐘后運行
Hour? ?? ?at now + 1 hour? ?? ?任務(wù)在1小時后運行
Days? ?? ?at now + 3 days? ?? ?任務(wù)在3天后運行
Weeks? ???at now + 2 weeks? ???任務(wù)在兩周后運行
Fixed? ???at midnight? ?? ?? ? 任務(wù)在午夜運行
Fixed? ???at 10:30pm? ?? ?? ???任務(wù)在晚上10點30分
Fixed ? ? at?23:59 12/31/2018?任務(wù)在2018年12月31號23點59分
與crond不同的是,at任務(wù)調(diào)度是一次性的,而crond是重復(fù)性的
1.1 at命令是一次性定時計劃任務(wù),at的守護(hù)進(jìn)程atd會以后臺模式運行,檢查作業(yè)隊列來運行
1.2 默認(rèn)情況下,atd守護(hù)進(jìn)程每60s檢查作業(yè)隊列,有作業(yè)時,會檢查作業(yè)運行時間,如果時間與當(dāng)前時間匹配,則運行此作業(yè)
1.3 at命令是一次性定時計劃任務(wù),執(zhí)行完一個任務(wù)后就不再執(zhí)行這個任務(wù)了
1.4 在使用at命令的時候,一定要保證atd進(jìn)程的啟動,可以使用相關(guān)指令查看
ps -ef | grep atd 可以檢查atd是否在運行
at [選項] [時間]
按兩次 ctrl+d 結(jié)束at命令的輸入
4.1 當(dāng)天的hh:mm(小時:分鐘),假如這個時間已經(jīng)過去,那么就第二天的這個時間執(zhí)行。例如04:00
4.2 模糊的詞語,例如midnight、noon、teatime(下午茶時間,16:00左右)
4.3 采用12小時計時制,例如8am
4.4 指定執(zhí)行命令的具體日期,格式為month dat(月 日)或者mm/dd/yy或者dd.mm.yy,指定的日期必須跟著寫在在指定時間的后面,例如:04:00 2021-3-1就是2021年3月1日凌晨4點整執(zhí)行
4.5 相對計時法,指定格式為now + count time-units,now就是當(dāng)前時間,time-units是時間單位,可以是minutes、hours、days、weeks。count是時間的數(shù)量,例如:now + 5 minutes
4.6 直接用today、tomorrow來指定完成命令的時間
5.1 2天后的下午5點,執(zhí)行/bin/ls /home指令
at 5pm + 2 days 按回車鍵
然后寫下那個時刻要執(zhí)行命令 /bin/ls /home
最后按兩次ctrl+d退出at指令
5.2 atq指令可以直接執(zhí)行,查看系統(tǒng)中待執(zhí)行的工作任務(wù)
5.3 明天17:00輸出時間到指定文件內(nèi) /root/date100.log
at 17:00 tomorrow 按回車鍵
date /root/date100.log
按兩次ctrl+d退出at指令的輸入
5.4 2分鐘后
at now + 2 minutes
5.5 刪除已經(jīng)設(shè)置的任務(wù),atrm 編號
可以用atq列出待執(zhí)行的任務(wù),列出后第一列就是job編號
一次性定時計劃任務(wù)的at命令的用法!
1.命令格式:
at[參數(shù)][時間]
2.命令功能:
在一個指定的時間執(zhí)行一個指定任務(wù),只能執(zhí)行一次,且需要開啟atd進(jìn)程(
ps -ef | grep atd查看, 開啟用/etc/init.d/atd start or restart; 開機(jī)即啟動則需要運行 chkconfig --level 2345 atd on)。
3.命令參數(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列隊 使用指定的列隊
-f文件 從指定文件讀入任務(wù)而不是從標(biāo)準(zhǔn)輸入讀入
-t時間參數(shù) 以時間參數(shù)的形式提交要運行的任務(wù) 《Linux就該這么學(xué)》
使用實例:
實例1:三天后的下午 5 點鍾執(zhí)行 /bin/ls
命令:
at 5pm+3 days
輸出:
[root@localhost ~]# at 5pm+3 days
at /bin/ls
at EOT
job 7 at 2013-01-08 17:00
[root@localhost ~]#
說明:
實例2:明天17點鐘,輸出時間到指定文件內(nèi)
命令:
at 17:20 tomorrow
輸出:
[root@localhost ~]# at 17:20 tomorrow
at date /root/2013.log
at EOT
job 8 at 2013-01-06 17:20
網(wǎng)頁題目:linux下at命令詳解的簡單介紹
文章位置:http://muchs.cn/article12/doecggc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、動態(tài)網(wǎng)站、定制網(wǎng)站、面包屑導(dǎo)航、移動網(wǎng)站建設(shè)、網(wǎng)站排名
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)