linux命令詳解之(at)--6/24


在Linux下,有兩個命令可以用來作為計划任務而執行,
at:一次性定時任務計划執行
crontab :每天定時任務計划執行


以下僅說一下一次性任務計划執行(at)
要使用一次性任務計划,linux必須要有負責這個計划任務的五福,那就是atd服務
但是並非所有的linux distribution都默認會打開,我們需要手動激活愛聽的任務
#:/etc/init.d/atd start
#:/etc/init.d/atd stop

一、at服務

  cron是一個linux下 的定時執行工具,可以在無需人工干預的情況下運行作業。
  service atd start    //啟動服務
  service atd  stop     //關閉服務
  service atd restart  //重啟服務
  service atd reload   //重新載入配置
  service atd status   //查看服務狀態 

二、at在配置文件:

at類似打印進程,會把任務放到/var/spool/at目錄中,到指定時間運行它 。at命令相當於另一個shell,運行at time命令時,它發送一個個命令,可以輸入任意命令或者程序。

atd服務啟動支持用法:/etc/init.d/atd {start|stop|restart|crondrestart|status}

出現如下服務,證明系統未安裝愛聽的服務,如圖:
linux命令詳解之(at)

我們需要手動安裝
#:yum install - y at
#:apt-get install at
linux命令詳解之(at)

啟動服務:

#:/etc/init.d/atd start
linux命令詳解之(at)

如果擔心啟動是否執行OK的話,可使用命令查看:
#;ps aux |grep atd
linux命令詳解之(at)

at 命令參數
at [參數] [時間]
-m:當指定的任務被完成之后,將給用戶發送郵件,即使沒有標准輸出
-I:atq的別名
-d:atrm的別名
-v:顯示任務將被執行的時間
-c:打印任務的內容到標准輸出
-V:顯示版本信息
-q:使用指定隊列
-f:從指定文件讀入任務,而不是從標准輸入讀入
-t:一時間參數的形式提交要運行的任務

at時間格式:
HH:AM
ex>04:00   #在今日的HH:MM是可執行,弱勢該是可以超過,在在明天的此時可執行
HH:MM YYYY-MM-DD
ex>04:00 2016-03-17
強制規定在某年某月的某一天的特殊時刻進行該任務
HH:MM[am|pm] [Month] [date]
ex>04pm March 17
強制在某年某月的的某時刻進行該任務
HH:MM[am|pm] + number [minutes|hours|days|weeks]
ex>now + 5 minutes
ex<04pm + 3days
某個時間點再加幾個事件后才執行該任務

使用實例:
1.三天后的下午5點執行/bin/ls
#:at 5pm+3 days
at>/bin/ls
at>按ctrl+D
linux命令詳解之(at)

2.明天17點鍾,輸出時間到指定文件內
#:at 17:00 tomorrow
at>date>/tmp/2016.log
at>按ctrl+D
linux命令詳解之(at)

3.使用atq查看系統沒有執行的工作任務
#:atq
linux命令詳解之(at)

4.刪除已經設定的任務
#:atq
#atrm 任務號
#atq
linux命令詳解之(at)

5.顯示已經設定的任務內容
#:at -c  任務號
linux命令詳解之(at)
中間省略N多
linux命令詳解之(at)

atd設置開機啟動:
#:chkconfig atd on  #當前用戶
#chkconfig --level 2345 atd on  #修改服務器的默認啟動等級

at命令的安全問題:
如何達到at命令的使用可控,這是一個問題,不過我哦們可以使用
/etc/at.allow 與 /etc/at.deny
來對at的使用進行限制,其工作原理如下:
先尋找/etc/at.allow,寫入這個文件的使用者能用,沒有在此文件中的則不能使用(即使沒有寫在/etc/at.deny中)
如果沒有/etc/at.allow不存在,尋找/etc/at.deny文件,寫在此文件中的使用者不能使用,而沒有在此文件中的使用者,就可以使用
如果兩個文件讀不存在,那么只有root可以使用at命令。

一般情況下。allow的管理較為嚴格,deny則較為松散
一般情況下,按章完成后系統通常會保留一個空的/etc/at/deny文件,儀式是允許所有人使用,如果不希望某人使用的話,直接把使用者的賬戶跳入/etc/at.deny里面即可。注意:一個賬號一行

相關命令:

● at:在特定的時間執行一次性的任務
● atq:列出用戶的計划任務,如果是超級用戶將列出所有用戶的任務,結果的輸出格式為:作業號、日期、小時、隊列和用戶名
● atrm:根據Job number刪除at任務
● batch:在系統負荷允許的情況下執行at任務,換言之,就是在系統空閑的情況下才執行at任務

 

相關配置文件:

● 時間規范的確切定義可以在/usr/share/doc/at-3.1.10/timespec中查看
● 默認情況下計划任務都是放在/var/spool/at/這個文件
● root用戶可以在任何情況下使用at命令,而其他用戶使用at命令的權限定義在/etc/at.allow(被允許使用計划任務的用戶)和/etc/at.deny(被拒絕使用計划任務的用戶)文件中
● 如果/etc/at.allow文件存在,只有在該文件中的用戶名對應的用戶才能使用at
● 如果/etc/at.allow文件不存在,/etc/at.deny存在,所有不在/etc/at.deny文件中的用戶可以使用at
● at.allow比at.deny優先級高,執行用戶是否可以執行at命令,先看at.allow文件沒有才看at.deny文件
● 如果/etc/at.allow和/etc/at.deny文件都不存在,只有root用戶能使用at
● 一個空內容的/etc/at.deny表示任何用戶都能使用at命令,這是默認的配置
● 一般情況下這兩個文件存在一個即可。如果只有少數幾個用戶需要使用計划任務,那么就保留at.allow文件,如果大部分用戶都要使用計划任務,那么保留at.deny即可

八:創建at任務:

創建at任務方式有兩種,從文件輸入和從控制台輸入。以下分別用兩種方式創建1分鍾后將當前時間寫入 /root/learngit 文件的命令

1. 文件輸入:

linux中at命令詳解

2. 控制台輸入:

linux中at命令詳解

九:實例:

linux中at命令詳解
linux中at命令詳解

linux中at命令詳解

linux中at命令詳解
linux中at命令詳解


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM