linux 計劃任務 crontab

來源:互聯網
上載者:User

在過去的一年裡,微軟的windows 7大行其道,不過Linux系統也越來越受到歡迎,你對Linux系統瞭解嗎?你是Linux系統的應用者嗎?本文為你詳細介紹Linux計劃任務,為你在學習Linux計劃任務時起一定的作用。

  Linux有三種計劃任務:

  at:指定一個時間執行一個任務 (適用一個或多個任務,執行一次後就不用)

  cron:根據一個時間表自動執行任務 (使用一個或多個任務,周期性執行)

  系統層級的計劃任務及其擴充anacron:在一個指定時間間隔錯過後自動執行任務

  一、at服務:安排一個任務在未來執行,需要一個atd的系統後台進程

  #at now+2 minutes 斷行符號

  >輸入要執行的命令

  >ctrl+d 結束輸入

  atq;查詢當前的等待任務

  用atq來查詢,已經啟動並執行任務,就消失了。這就是at計劃任務的重點,只運行一次

  atrm:刪除等待任務

  啟動計劃任務後,如果不想啟動設定好的計劃任務可以使用atrm命令刪除。

  格式:atrm 任務號

  命令後面跟計劃任務編號,如果不跟,就會刪除這個使用者所有的計劃任務。

  還可以進入到/var/spool/at目錄裡把計劃任務刪除,計劃任務的檔案都儲存在該目錄裡,可以用rm -f 檔案名稱來刪除(以檔案的形式刪除計劃任務,因為計劃任務是以檔案形式儲存在該目錄中)

  在通常情況下,超級使用者都可以使用這個命令。對於其他使用者來說,能否可以使用就取決於兩個檔案:/etc/at.allow和/etc/at.deny

  如果你要讓哪個使用者不能使用計劃任務,就直接把他的使用者名稱寫進去就可以了,一排只能寫一個。

  同時寫入allow 及deny, 允許.

  二、cron服務

  上面已經簡單介紹了cron的一些進程和控制。下面我們來看看cron怎麼實現。

  相對與at,cron的優點就是能夠周期性的執行某個命令,at卻只能執行一次

  cron的後台進程名字是crond ,cron也是system V的服務,所以我們可以service crond start|stop 來啟動和關閉此服務,也可以使用chkconfig或者ntsysv來選擇cron服務的預設開啟,這些命令在以前我們都講過的

  #crontab -e 編輯目前使用者的cron表

  #crontab -l 查看目前使用者的cron表

  #crontab -r 刪除目前使用者的cron進程

  #crontab -u 使用者名稱 以某使用者的身份來控制cron表

  還有個重要的知識點,就是當使用者的計劃任務建立後是存放在/var/spool/cron這個目錄

  當使用crontab -e編輯目前使用者的cron表後,會出現一個vi檔案,cron的格式是這樣的。分成兩列,左邊是時間,右邊是啟動並執行命令。時間是由5個部分組成。

  例:

  * * * * * wall hello everyone

  5個星號分別代表:minute hour day-of-month month-of-year day-of-week 分時日月周 ,而wall hello everyone 這是命令內容。上面的意識是每分每小時每天每月每周廣播hello everyone。具體時間大家可以自己定義。如果要每兩分鐘發送就用*/2代替第一個*。也可以是用具體時間來表示。

  Crontab –e 編輯的任務不要加入使用者名稱

  第一個*星號代表個小時的第幾分鐘:minute 範圍是從0-59

  第二個*星號代表每天的第幾個小時:hour 範圍是從0-23

  第三個*星號代表每月的第幾個日:day-of-month 範圍從1-31

  第四個*星號代表沒年的第幾個月:month-of-year 範圍從1-12

  第五個*星號代表每周的星期幾:day-of-week 範圍從0-6,其中0表示星期日

  使用者名稱:也就是執行程式要通過哪個使用者來執行,這個一般可以省略;

  命令:執行的命令和參數。

  如果我要表示9月10日25分執行ls var/spool/cron任務怎麼表示?

  25 * 10 9 * ls var/spool/cron

  */1 * * * 0 wall Hello redking.blog.51cto.com

  */ 表示每多少分鐘執行一次哈~

  當制定了cron任務後,可以用crontab -l查看, 也可以到/var/spool/cron/目錄查看。裡面的檔案名稱字就是對應使用者的cron任務

  可以使用crontab -r 來刪除目前使用者的cron

  vim /etc/crontab 與crontab -e寫入的定時運行有什麼區別?

  vim /etc/crontab:是系統層級定義的crontab,/etc/crontab的所有者和組都是root

  crontab -e :是使用者自訂的crontab,是所有的使用者都可以寫入的

  兩種方法記錄的位置不一樣,一個在/etc/ 另一個在/var/ 裡面。都被cron服務調用哈~

  三、系統層級的計劃任務及其擴充anacrontab

  anacrontab就是系統計劃任務的擴充檔案:在一個指定時間間隔錯過後自動執行任務

  這個是系統設定好了,清理系統垃圾或者是自動執行某些指令碼的系統任務,一般我們做瞭解就行了,不要更改

  設定檔是/etc/anaconrtab

  # /etc/anacrontab: configuration file for anacron

  # See anacron(8) and anacrontab(5) for details.

  SHELL=/bin/sh

  PATH=/sbin:/bin:/usr/sbin:/usr/bin

  MAILTO=root

  #####格式是這樣的:period(頻率.天數) delay(延遲,分鐘) job-identifier command

  1       65      cron.daily              run-parts /etc/cron.daily

  7       70      cron.weekly             run-parts /etc/cron.weekly

  30      75      cron.monthly            run-parts /etc/cron.monthly

  SHELL:就是運行計劃任務的解譯器,預設是bash

  PATH:執行命令的環境變數

  MAILTO:計劃任務的出發者使用者

  HOME:家目錄為/

  run-parts是一個指令碼,在/usr/bin/run-parts,作用是執行一個目錄下的所有指令碼/程式。

  run-parts /etc/cron.hourly執行目錄/etc/cron.hourly/之下的所有指令碼/程式.

  run-parts下面就是啟動並執行命令

  第一行的意思是:每天開機65分鐘後就檢查cron.daily檔案是否被執行了,如果今天沒有被執行就執行他

  第二行的意思是:每隔7天開機後70分鐘檢查cron.weekly檔案是否被執行了,如果一周內沒有被執行就執行他

  和at差不多,就是/etc/cron.deny這個設定檔來控制, 同時寫入allow 及deny, 允許.以上就是Linux計劃任務

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.