at命令
西安網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),西安網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為西安成百上千家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站制作要多少錢,請找那個售后服務(wù)好的西安做網(wǎng)站的公司定做!
at:計劃任務(wù),在特定的時間執(zhí)行某項工作,在特定的時間執(zhí)行一次。
格式:at+時間
例1:date //查看系統(tǒng)當前時間
at 時間 //系統(tǒng)計劃啟動任務(wù)時間
at date /root/1.txt //date:系統(tǒng)計劃啟動任務(wù)時間執(zhí)行date命令;/root/1.txt執(zhí)行命令寫入位
置和文件
ctrl+d退出 //退出at命令
例2:date //查看系統(tǒng)當前時間
at 時間 //系統(tǒng)計劃啟動任務(wù)時間
at init 0 /root/2.txt //init 0:系統(tǒng)計劃啟動任務(wù)時間執(zhí)行init 0(關(guān)機)命令;/root/2.txt執(zhí)
行命令寫入位置和文件
例3:在固定時間內(nèi)添加一個用戶(這時建立的用戶沒有密碼)
#at 12:00(時間) //at命令設(shè)定12:00執(zhí)行一項操作
atuseradd aaa //在at命令里設(shè)定添加用戶aaa
ctrl+d //退出at命令
tail -f /etc/passwd //查看/etc/passwd文件后十行是否增加了一個用戶aaa
計劃任務(wù)結(jié)束后,查看任務(wù)是否寫入文件中,可以用cat或vi命令查看。
格式:cat(vi)+(路徑)文件名
例1:cat(vi) 1.txt
日 2月 6 09:21:28 CST 2005
計劃任務(wù)設(shè)定后,在沒有執(zhí)行之前我們可以用atq命令來查看系統(tǒng)沒有執(zhí)行工作任務(wù)。
格式:atq
例:atq
1 2005-02-06 09:23 a root
啟動計劃任務(wù)后,如果不想啟動設(shè)定好的計劃任務(wù)可以使用atrm命令刪除。
格式:atrm+任務(wù)號
例:atrm 1 //刪除計劃任務(wù)1
atq //查看計劃任務(wù)是否刪除
還可以進入到/var/spool/at目錄里把計劃任務(wù)刪除,計劃任務(wù)的文件都保存在該目錄里,可以用rm -f
文件名來刪除(以文件的形式刪除計劃任務(wù),因為計劃任務(wù)是以文件形式保存在該目錄中)
例:#cd /var/spool/at //進入到/var/spool/at目錄中
ls //顯示目錄中所有文件
rm -f a0000a0119b0df //刪除計劃任務(wù)
在通常情況下,超級用戶都可以使用這個命令。對于其他用戶來說,能否可以使用就取決于兩個文
件:/etc/at.allow和/etc/at.deny。
當“用戶名”寫入/etc/at.deny中,用戶不能執(zhí)行at命令(管理員限制用戶使用at命令)。
例:useradd text //新建一個text用戶
ls /etc/at.deny //查看at.deny文件內(nèi)容
vi /etc/at.deny //對at.deny文件進行編輯
text //對at.deny文件進行編輯,寫入text用戶名,進行at命令限制,然后wq(保存退出)
cat /etc/at.deny //顯示at.deny文件內(nèi)容
su - text //切換到text用戶
at 12:00 //text用戶執(zhí)行at命令,如果被限制則出現(xiàn)下面的提示。
You do not have permission to use at.你不允許使用at這個命令
at.allow比at.deny優(yōu)先級高
at.allow文件中有的用戶可以執(zhí)行at,沒有則不能。
linux操作系統(tǒng)在執(zhí)行用戶是否可以執(zhí)行at命令時,先看at.allow文件沒有才看at.deny文件。
注意:linux操作系統(tǒng)默認沒有/etc/at.allow文件。
例:ls /etc/at.allow //查看是否已經(jīng)建立at.allow文件
touch /etc/at.allow //建立/etc/at.allow文件
vi /etc/at.allow //對at.allow文件進行編輯
text //對at.allow文件進行編輯,寫入text用戶名,該用戶名可以執(zhí)行at命令,然后wq(保存退出)。
su - text //切換到text用戶
at 12:00 //text用戶執(zhí)行at命令,若不出現(xiàn)上面所說的提示就可以進行at命令設(shè)定了。
at命令格式
at HH:MM YYYY-MM-DD //HH(小時):MM(分鐘) YYYY(年)-MM(月份)-DD(日)
例:at 4:00 2004-11-27
HH[am pm]+D(天) days //HH(小時)[am(上午)pm(下午)]+days(天)
例:4pm + 3days :3天以后下午4:00執(zhí)行at命令設(shè)定的計劃任務(wù)。
Linux下,有兩個命令可以用來作為計劃任務(wù)而執(zhí)行,
要使用一次性任務(wù)計劃,linux必須要有負責(zé)這個計劃任務(wù)的服務(wù),那就是atd服務(wù)
但是并非所有的linux distribution都默認會打開,我們需要手動激活愛聽的任務(wù)
如果服務(wù)未安裝,則需要手動安裝
#:yum install - y at 或 #:apt-get install at
如果擔心啟動是否執(zhí)行OK的話,可使用命令查看:
#:ps aux |grep atd
或者使用
systemctl status atd
# 查閱一下 atd 目前的狀態(tài),Active 狀態(tài)應(yīng)是 running
使用 at 這個指令來產(chǎn)生所要運行的工作,并 將這個工作以文本文件的方式寫入 /var/spool/cron/atjobs/ 目錄內(nèi),該工作便能等待 atd 這個服務(wù)的取用與執(zhí)行了。 不過,因為安全的理由,并不是所有的人都可以進行 at 工作調(diào)度!
at 的使用限制是利用 /etc/at.allow 與 /etc/at.deny 這兩個文件來進行的! 加上這兩個文件后,at 的工作情況其實是這樣的:
在一般的 distributions 當中,由于假設(shè)系統(tǒng)上的所有用戶都是可信任的,因此系統(tǒng)通常會保留一個空的 /etc/at.deny 文件,意思是允 許所有人使用 at 指令的意思 (您可以自行檢查一下該文件)。 不過,萬一你不希望有某些 使用者使用 at 的話,將那個使用者的帳號寫入 /etc/at.deny 即可! 一個帳號寫一行。
單一工作調(diào)度的進行就使用 at 這個指令!這個指令的運行非常簡單!將 at 加上一個時間即可!基本的語法如下:
事實上,當我們使用 at 時會進入一個 at shell 的環(huán)境來讓使用者下達工作指令,此時,建議 你最好使用絕對路徑來下達你的指令,比較不會有問題!由于指令的下達與 PATH 變量有關(guān), 同時與當時的工作目錄也有關(guān)連 (如果有牽涉到文件的話),因此使用絕對路徑來下達 指令,會是比較一勞永逸的方法。 舉例來說,你在 /tmp 下達 at now 然后輸入 mail -s "test" root .bashrc , 問一下,那個 .bashrc 的文件會是在哪里?答案是 /tmp/.bashrc !因為 at 在運行時,會跑到當時下達 at 指令的那個工作目錄運行!
要注意的是,如果在 at shell 內(nèi)的指令并沒有任何的訊息輸出,那么 at 默認不會發(fā) email 給執(zhí)行者的。 如果你想要讓 at 無論如何都發(fā)一封 email 告知你是否執(zhí)行了指令,那么 可以使用“ at -m 時間格式 ”來下達指令! at 就會傳送一個訊息給執(zhí)行者,而不論該指令執(zhí)行有無訊息輸出了!
如果要在某某時刻,在我的終端機顯示出 Hello 的字樣,可以通過終端機的設(shè)備來處理!假如你在 tty1 登陸(在命令行里面輸入 tty 可以查看),則可以使用 echo "Hello" /dev/tty1 。
at 有另外一個很棒的優(yōu)點, 由于 at 工作調(diào)度的使用上,系統(tǒng)會將該項 at 工作獨立出你的 bash 環(huán)境中, 直接交給系統(tǒng)的 atd 程序來接管,因此,當你下達了 at 的工作之后就可以立刻離線了, 剩下的工作就完全交 給 Linux 管理即可!所以如果有長時間的網(wǎng)絡(luò)工作時,使用 at 可以讓你免除網(wǎng)絡(luò)斷線后的困擾。
其實 batch 是利用 at 來進行指令的下達!只是加入一些控制參數(shù)而已。這個 batch 神奇的地方在于:他會在 CPU 的工作負載小于 0.8 的時候,才進行你所下達的工作任務(wù)啦!
那什么是工作負載 0.8 呢?這個工作負載的意思是: CPU 在單一時間點所負責(zé)的工作數(shù)量。不是CPU 的使用率喔! 舉例來說,如果我有一只程序他需要一直使用 CPU 的運算功能,那么此 時 CPU 的使用率可能到達 100% , 但是 CPU 的工作負載則是趨近于“ 1 ”,因為 CPU 僅負責(zé)一個工作!如果同時執(zhí)行這樣的程序兩支呢? CPU 的使用率還是 100% ,但是工作負載 則變成 2 了! 所以也就是說,當 CPU 的工作負載越大,代表 CPU 必須要在不同的工作之間進行頻繁的工 作切換。 因為一直切換 工作,所以會導(dǎo)致系統(tǒng)忙碌啊! 系統(tǒng)如果很忙碌,還要額外進行 at ,不太合理!所以才有 batch 指令的產(chǎn)生!
下面來實驗一下 batch 好了!為了產(chǎn)生 CPU 較高的工作負載,我們用了 計算 pi 的腳本,連續(xù)執(zhí)行 4 次這只程序, 來仿真高負載,然后看看batch 的工作現(xiàn)象。
使用 uptime 可以觀察到 1, 5, 15 分鐘的“平均工作負載”量,因為是平均值,所以當我們?nèi)缟?表刪除掉四個工作后,工作負載不會立即降低, 需要一小段時間讓這個 1 分鐘平均值慢慢回 復(fù)到接近 0 ?。‘斝∮?0.8 之后的“整分鐘時間”時,atd 就會將 batch 的工作執(zhí)行掉了!
什么是“整分鐘時間”呢?不論是 at 還是 crontab,他們最小的時間單位是“分 鐘”,所以,基本上,他們的工作是“每分鐘檢查一次”來處理的! 就是整分 (秒為 0 的時候),同時,你會發(fā)現(xiàn)其實 batch 也是使用 atq/atrm 來管理的!
一次性定時計劃任務(wù)的at命令的用法!
1.命令格式:
at[參數(shù)][時間]
2.命令功能:
在一個指定的時間執(zhí)行一個指定任務(wù),只能執(zhí)行一次,且需要開啟atd進程(
ps -ef | grep atd查看, 開啟用/etc/init.d/atd start or restart; 開機即啟動則需要運行 chkconfig --level 2345 atd on)。
3.命令參數(shù):
-m 當指定的任務(wù)被完成之后,將給用戶發(fā)送郵件,即使沒有標準輸出
-I atq的別名
-d atrm的別名
-v 顯示任務(wù)將被執(zhí)行的時間
-c 打印任務(wù)的內(nèi)容到標準輸出
-V 顯示版本信息
-q列隊 使用指定的列隊
-f文件 從指定文件讀入任務(wù)而不是從標準輸入讀入
-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