linux筆記:crontab計劃任務

來源:互聯網
上載者:User

 

伺服器需要定時處理一些任務,一般是可以利用linux系統的crontab來處理,可以精確到分鐘。windows下面也有計劃任務,但是以前網管就說這個有漏洞,win2003的伺服器都不給啟用。

引用crond 是linux用來定期執行程式的命令。當安裝完成作業系統之後,預設便會啟動此任務調度命令。crond命令每分鍾會定期檢查是否有要執行的工作,如果有要執行的工作便會自動執行該工作。而linux任務調度的工作主要分為以下兩類:
1、系統執行的工作:系統周期性所要執行的工作,如備份系統資料、清理緩衝
2、個人執行的工作:某個使用者定期要做的工作,例如每隔10分鐘檢查郵件伺服器是否有新信,這些工作可由每個使用者自行設定。

在crontab裡面,有幾個點內容而已:
執行時間、執行使用者、執行內容

1 執行時間

分 時 日 月 天每星期
如果不需要指定的地方,可以用 * 來代表,否則就是指定的
也可以使用 */10 指定每10個單位

比如 */10 * * * * 表示每10分鐘執行一次

引用 任務調度設定檔案的寫法
其格式如下:
Minute Hour Day Month Dayofweek command
分鐘 小時 天 月 天每星期 命令

每個欄位代表的含義如下:
Minute 每個小時的第幾分鐘執行該任務
Hour 每天的第幾個小時執行該任務
Day 每月的第幾天執行該任務
Month 每年的第幾個月執行該任務
DayOfWeek 每周的第幾天執行該任務
Command 指定要執行的程式
在這些欄位裡,除了“Command”是每次都必須指定的欄位以外,其它欄位皆為可選欄位,可視需要決定。對於不指定的欄位,要用“*”來填補其位置。

舉例如下:
1、指定每小時的第5分鐘執行一次ls命令
5 * * * * ls

2、指定每天的 5:30 執行ls命令
30 5 * * * ls

3、指定每月8號的7:30分執行ls命令
30 7 8 * * ls

4、指定每年的6月8日5:30執行ls命令
30 5 8 6 * ls

5、指定每星期日的6:30執行ls命令
30 6 * * 0 ls
註:0表示星期天,1表示星期1,以此類推,也可以用英文來表示,sun表示星期天,mon表示星期一等。

6、每月10號及20號的3:30執行ls命令
30 3 10,20 * * ls
註:“,”用來串連多個不連續的時段

7、每天8-11點的第25分鐘執行ls命令
25 8-11 * * * ls
註:“-”用來串連連續的時段

8、每15分鐘執行一次ls命令
*/15 * * * * ls
即每個小時的第0 15 30 45 60分鐘執行ls命令

9、每個月中,每隔10天6:30執行一次ls命令
30 6 */10 * * ls
即每月的1、11、21、31日是的6:30執行一次ls命令。

10、每天7:50以root 身份執行/etc/cron.daily目錄中的所有可執行檔
50 7 * * * root run-parts /etc/cron.daily
註:run-parts參數表示,執行後面目錄中的所有可執行檔。

新增調度任務

新增調度任務可用兩種方法:
1、在命令列輸入: crontab -e 然後添加相應的任務,wq存檔退出。
2、直接編輯/etc/crontab 檔案,即vi /etc/crontab,添加相應的任務。

查看調度任務
crontab -l //列出當前的所有調度任務
crontab -l -u jp   //列出使用者jp的所有調度任務

刪除任務調度工作
crontab -r  //刪除所有任務調度工作

任務調度執行結果的轉向
例1:每天5:30執行ls命令,並把結果輸出到/jp/test檔案中
30 5 * * * ls >/jp/test 2>&1
註:2>&1 表示執行結果及錯誤資訊。

編輯/etc/crontab 檔案配置cron

  cron服務每分鐘不僅要讀一次/var/spool/cron內的所有檔案,還需要讀一次/etc/crontab,因此我們配置這個檔案也
能運用cron服務做一些事情。用crontab配置是針對某個使用者的,而編輯/etc/crontab是針對系統的任務。此檔案的檔案格式是:
  SHELL=/bin/bash
  PATH=/sbin:/bin:/usr/sbin:/usr/bin
  MAILTO=root //如果出現錯誤,或者有資料輸出,資料作為郵件發給這個帳號
  HOME=/ //使用者啟動並執行路徑,這裡是根目錄
  # run-parts
  01 * * * * root run-parts /etc/cron.hourly //每小時執行/etc/cron.hourly內的指令碼
  02 4 * * * root run-parts /etc/cron.daily //每天執行/etc/cron.daily內的指令碼
  22 4 * * 0 root run-parts /etc/cron.weekly //每星期執行/etc/cron.weekly內的指令碼
  42 4 1 * * root run-parts /etc/cron.monthly //每月去執行/etc/cron.monthly內的指令碼

  大家注意"run-parts"這個參數了,如果去掉這個參數的話,後面就可以寫要啟動並執行某個指令碼名,而不是檔案夾名了。

以上內容主要參考文章:http://blog.donews.com/shanxueyi/archive/2006/09/26/1047406.aspx

crontab檔案有六個域,每個域之間用空格或者Tab鍵分開,前五個域都是整數或者*,格式如下(括弧裡面是取值範圍):

分鐘(0-59) 小時(0-23) 日(1-31) 月(1-12) 星期(0-6) 要執行的命令

其中星期取值0指星期日,其它取值遞推。前面五個域,每個域都可以用*表示所有合法的值,或者用一個列表列出合法的值,各值之間用“,”隔開,也可以用“-”表示一個範圍。下面的命令示範每個星期,星期日到星期四晚上執行/home/wuxp/backup.sh。

30 23 * * 0-4 /home/wuxp/backup.sh

下面的例子示出每星期星期一到星期五3:15分清除使用者目錄下的core檔案

15 3 * * 1-5 find  $HOME -name core 2>/dev/null |xargs rm -f

重新啟動OS的定時服務,使新添加的任務生效。

Sun Solaris
#/etc/rc2.d/S75cron stop
#/etc/rc2.d/S75cron start
Linux
#/etc/rc.d/init.d/crond restart

這樣系統就會定時執行計畫任務。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.