Linux例行性工做at,cron,進程管理

     Linux工做調度的種類:at,cronlinux

兩種工做調度的方式:vim

     一種是例行性的,就是每隔必定的週期要來辦的事項(經過at實現); 安全

一種是突發性的,就是此次作完之後就沒有的那一種(經過cron實現)。 bash

1、突發性的工做調度(at) dom

要使用單一工做調度,咱們的Linux系統上面由atd來負責這個調度的服務,首先啓動/etc/init.d/atd restart    編輯器

 能夠設置一下開機時就啓動這個服務,省得每次從新啓動都得再來一次。 chkconfig atd on  ide

 at安全管理 spa

    /etc/at.deny 3d

    將不可使用at的賬號寫入其中,若未記錄到這個文件當中的用戶,就可使用at rest

 at的參數使用

   at [-m -v -c -l -d]  TIME

  -m 當at的工做完成後,即便沒有輸出信息,以      email通知用戶該工做已完成

   -l 至關於atq,列出全部用戶的at任務

   -d 至關於atrm,去掉at的任務

   -v 能夠用較明顯的時間格式列出at調度中的工做

   -c 列出後面接的該項工做的實際命令內容

TIME:時間格式,這裏能夠定義何時要進行at這項工做時間,格式有:

    HH:MM     ex>04:00

    HH:MM YYYY-MM-DD  ex>04:00 2012-04-01

    HH:MM[am|pm]  [Month]  [Date]   ex>04:00 March 17

    HH:MM[am|pm]  +number [minutes|hours|days|weeks]

    ex>now +5 minutes  就是說,在如今在加5minutes後進行該工做調度。

    編寫例行性工做時應注意:

    使用命令時儘可能用絕對路徑,

    用Ctrl+d 結束編寫。

at工做的管理

 at並不像cron那樣,能夠用crontab -e來編輯本身的工做調度,

當咱們發現命令輸入錯誤,就目前來說,只能刪除它。

(由於at的存放文件並不像crontab,at命令的存放文件爲二進制文件[/var/spool/at/,對應的工做調度執行事後,則其二進制文件也就消失了],可用od查看,從簡單使用的角度來說,若命令錯了,直接刪除(atrm)重建)

  atq 查詢目前主機上面有多少的at工做調度;

  atrm 後加工做序列號,刪除該工做任務。

2、例行性的工做調度(cron)

   cron安全管理

   /etc/cron.deny

   將不可使用crontab的賬號寫入其中,若未記錄到這個文件當中的用戶,就可使用crontab.

  crontab的參數使用

  -u -e -l -r

  -u 只有root才能進行這個任務,也即幫其餘用戶新建  、刪除crontab工做高度;

  -e 編輯crontab的工做內容;

  -l 查閱crontab的工做內容;

  -r 刪除全部的crontab的工做內容,若僅要刪除一項  ,請用-e去編輯。

範例:用root的身份在天天的12:00發信給本身

crontab -e

#此時進入vi的編輯器界面。

 0  12  *  *  *  mail root -s "at 12:00" </root/.bashrc

#分 時  日 月 周 |<-------------命令串------------------>|

默認狀況下,任何用戶只要不被列入/etc/cron.deny當中,那麼他就能夠直接執行「crontab -e」去編輯本身的例行性命令了。當用戶使用crontab這個命令來新建工做調度以後,該項工做就會被記錄到/vart/spool/cron裏面去了,並且是以賬號來做爲判別的。

crontab命令的特殊字符:

  *   表明任什麼時候刻都接受的意思

  ,    表明分隔時段的意思,舉例:要執行工做3:00和6:00時,就是 0 3,6  *  *  * cdommand

  -    表明一段時間範圍內,

  /n    便是第隔n單位間隔的意思

舉例:*/5 * * * * command  便是每隔5分鐘執行一次這個命令

 可能有時處於停機狀態時,crontab命令就不能執行,這時就須要anacron來可喚醒停機期間的工做任務

  anacron 以天爲單位或者在開機後馬上進行anacron的操做,它會去檢測停機期間應該進行可是並無進行的crontab任務,並將該任務執行一遍,而後anacron就會自動中止了。

   因爲/etc/cron.daily內的任務比較多,所以咱們使用天天進行的任務來解釋一下anacron的運行狀況好了。anacron若執行「anacron -scron.daily」時,它會這樣運行的:

    1.由/etc/anacrontab分析到cron.daily這項工做名稱的天數爲1天;

    2.由/var/spool/anacron/cron.daily取出最近一次執行anacron的時間戳;

    3.由上個步驟與目前的時間比較,若差別天數爲1天以上(含1天),就準備進行命令;

    4.若準備進行命令,根據/etc/anacrontab的設置將延遲65分鐘;

    5.延遲時間事後,開始執行後續命令,即「run-parts /etc/cron.daily"這個命令;

    6.執行完畢後,anacron程序結束。

   如今你知道爲何隔了一陣子纔將linux開機時,開機事後約1小時左右系統會有一小時段的忙碌,並且硬盤會跑個不停!那是由於anacron正在執行過去crontab未執行的各項工做調度。

  進程管理:

   jobs  -l

注:其實+表明最近被放到後臺的工做號碼,-表明最近最後第二個被放置到後臺中的工做號碼。而超過最後第三個之後的工做,就不會有+、-符號存在了!

工做狀態是stopped,若工做狀態爲done,說明已經結束了,即使是最近沒有+號,當你在執行一次jobs,就已經看不到該工做了。

  進程的執行順序  

  priority與nice 

 

   PRI 值越低表明越優先,這個PRI的值是由內核動態調整的,用戶沒法直接調整PRI值,

   可經過Nice值,

   PRI(new)=PRI(old)+nice

  nice值能夠調整的範圍爲-20—19;(root)

     普通用戶調整的範圍爲0—19

  nice 是對即將執行的命令

   #用root給一個nice值爲-5,用於執行vi,並查看該進程!

   [root@www ~]nice -n -5  vi  &

  renice  是對正在執行的執行

   renice [number] PID

   [root@www ~]renice 10  18625

 

  kill -signal PID

  能夠幫咱們將這個signal傳送給某個工做(%jobnumber)或者是某個PID(直接輸入數字。要再次強調的是:kill後面直接加數字與加上%jobnumber的狀況是不一樣的!這個很重要。由於工做控制中有1號工做,可是PID1號則是專指「init」這個進程。你怎麼能夠將init關閉呢?關閉init,你的系統就死掉了啊!因此記得那個%是專門用在工做控制的。

     舉例:以下圖:用vim在後臺運行,用jobs查看,並想經過kill 1來刪除該工做號,發現並不能成功,會彈出說是不容許的操做,由於kill 1並非殺掉1號工做,而是關閉init,即系統的主進程,固然是不容許的了。

應該用kill %1,就能正確關閉1號工做了。

 killall -signal   命令名稱

  因爲kill後面必需要加上PID(或者是jobnumer),因此,一般kill都會配合ps,pstre等命令,由於咱們必需要找到相對應的那個進程的ID。可是,如此一來,很麻煩,能夠直接用killall 其後直接跟命令名稱,

    killall -1 httpd  可讓PID從新讀取本身的配置文件,相似從新啓動httpd服務

    也能夠用 pkill  -1  httpd

  killall -9 httpd  強制終止全部以httpd啓動的進程;

  killall -i  bash  依次詢問每個bash進程是否須要被終止進行。

 總之,要刪除某個進程,咱們可使用PID或者啓動該進程的命令名稱,而若是要刪除某個服務呢,最簡單的方法就是利用killall,由於它能夠將系統當中全部以某個命令名稱啓動的進程所有刪除。

相關文章
相關標籤/搜索