每天一個linux命令(33):atq命令

列出當前用戶的at任務列表

補充說明

atq命令 顯示系統中待執行的任務列表,也就是列出當前用戶的at任務列表。

語法

atq(選項)

選項

-V:顯示版本號;
-q:查詢指定隊列的任務。
at now + 10 minutes
at> echo 1111
at> <eot>
job 3 at Fri Apr 26 12:56:00 2013

atq
3       Fri Apr 26 12:56:00 2013 a root

實例

一、at服務
1.概念

①Linux系統想要使用單一計劃任務,需要at服務的支持
②at服務是由atd程序產生的
②並非Linux髮型版本都默認啓動了這個任務,有時候我們需要手動的啓動這個服務
③並且所有的Linux系統都有這個服務
2.atd服務的設置

重新啓動at服務:systemctl  restart  atd
讓at服務開機自動啓動:systemctl  enable atd
查看一下at目前的狀態:systemctl  status  atd
Loaded:是否開機自啓動,後面enable表示不能
Active:是否正在運行,running正在運行


二、at服務的運作方式
1.at的運行方式

at這個命令是用來產生所要運行的單一計劃任務的
at產生一個任務,然後以文本文件的方式寫入/var/spool/at/目錄內,該任務便能等待atd服務來使用與執行


2./etc/at.allow與/etc/at.deny文件

並不是所有人都可以執行at計劃任務,因爲出於安全的原因。於是系統用這兩個文件來管控at產生任務:
/etc/at.allow文件:只有在這個文件中的用戶才能使用at,不在這個文件中的用戶不能使用at命令(儘管沒有寫在at.deny中)
/etc/at.deny文件:寫在這個文件中的用戶不能使用at命令,而沒有在這個文件中的用戶就可以at命令
如果這兩個文件都不存在,那麼只有root纔可以使用at命令
/etc/at.allow與/etc/at.deny文件的注意事項
/etc/at.allow文件比較嚴謹
/etc/at.deny不嚴謹,因爲寫在這個文件的用戶不能使用at命令,不在這個文件中的用戶可以執行命令,不太安全


這兩個文件不一定同時存在,有一個存在時只會使用其中一個。怎麼使用還是看自己的設定,我的系統中默認是at.deny文件,並且文件是空的,代表所有用戶都可以使用at命令設定任務
三、at的命令格式與演示案例
1.格式

at   [選項]   時間格式
相關參數與選項

-m:如果at內的shell命令沒有任何輸入信息,也發送email給at任務使用者
-l:at -l 相當於atq命令,獵虎目前系統上面所有該使用的at計劃
-d:at -d相當於atrm命令,可以取消一個正在at計劃中的任務
-v:可以使用較明顯的時間格式列出at計劃中的任務列表
-c:後面跟任務編號,列出該任務的內容
時間的格式有以下幾種

HH:MM
HH:MM  YYYY-MM-DD
HH:MM[am/pm]  [Month]  [Date]
HH:MM[am/pm]  + number  [minuter/hours/days/weeks]:就是在某個時間點之後再過多久才執行
now:表示現在的時間
2.注意事項

輸入at命令之後,書寫任務時,命令和文件等都使用絕對路徑
任務書寫完之後,按住ctrl+d結束退出
3.at的執行與終端顯示關係

如果我們想要在終端顯示Hello字樣,然後在at裏面輸入echo "Hello",等時間到了,屏幕並不會顯示信息:因爲at的執行與終端環境無關,所有的標準輸出/標準錯誤輸出都發送到執行者的mailbox中,所以在終端看不到任何信息
解決上面的方法:通過終端的設備處理,如果你在tty1登錄,就在at內輸入:echo "Hello" > /dev/tty1
4.at的輸出問題(-m選項)

如果在at shell內輸入的命令並沒有輸出任何信息,那麼at不會發email給執行者。那麼此時你可以使用-m選項來執行命令,這樣at就會發送一個信息給執行者,而不論該命令執行有無信息輸出
5.演示案例

案例一:再過5分鐘之後,將/root/.bashrc文件發送給root自己


案例二:承上,上面產生的任務編號爲2,查看這個任務的內容


案例三:計劃在2019-03-06  23:30關機


四、at的脫機繼續執行的功能與特點
1.概念

當你用at分配一個計劃之後,系統會將該項at任務獨立出你的bash環境,直接交給系統的atd程序來管理。
因此,但你執行了at的任務之後就可以立刻脫機了,剩下的工作就完全交給Linux管理
2.案例

你用你的Windows系統與Linux系統連接服務,兩個系統之間有服務的交流,如果沒有設置at任務,一個系統關機,連個系統之間的連接都會斷開。如果你設置了at任務,即使你的Windows關機了,該服務還在運行
五、at任務的管理命令:atq、atrm
atq:查看你當前系統中有多少個at任務
atrm:刪除一個at任務,後面接at任務編號
查看任務


刪除任務3再查看,任務沒了

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章