Linux下crontab計劃任務使用詳解

Linux在相應用戶下,用crontab -l 命令能夠查看該用戶定時執行的任務,-e能夠編輯,可是其真實文件在哪兒呢??
以CentOS爲例,其真實的位置在:/var/spool/cron下面,有執行定時任務的用戶將會有以該用戶命名的一個文檔,vim該文檔與用命令crontab -l看到的同樣。

crontab命令

crontab命令用於安裝、刪除或者列出用於驅動cron後臺進程的表格。也就是說,用戶把須要執行的命令序列放到crontab文件中以得到執行。每一個用戶均可以有本身的crontab文件。下面就來看看如何建立一個crontab文件。

在/var/spool/cron下的crontab文件不能夠直接建立或者直接修改。crontab文件是經過crontab命令獲得的。如今假設 有個用戶名爲foxy,須要建立本身的一個crontab文件。首先可使用任何文本編輯器創建一個新文件,而後向其中寫入須要運行的命令和要按期執行的時間。

而後存盤退出。假設該文件爲/tmp/test.cron。再後就是使用crontab命令來安裝這個文件,使之成爲該用戶的crontab文件。鍵入:

crontab test.cron

這樣一個crontab 文件就創建好了。能夠轉到/var/spool/cron目錄下面查看,發現多了一個foxy文件。這個文件就是所需的crontab 文件。用more命令查看該文件的內容能夠發現文件頭有三行信息:

#DO NOT EDIT THIS FILE -edit the master and reinstall.

#(test.cron installed on Mon Feb 22 14:20:20 1999)

#(cron version --$Id:crontab.c,v 2.13 1994/01/17 03:20:37 vivie Exp $)

若是須要改變其中的命令內容時,仍是須要從新編輯原來的文件,而後再使用crontab命令安裝。

可使用crontab命令的用戶是有限制的。若是/etc/cron.allow文件存在,那麼只有其中列出的用戶才能使用該命令;若是該文件不存 在但cron.deny文件存在,那麼只有未列在該文件中的用戶才能使用crontab命令;若是兩個文件都不存在,那就取決於一些參數的設置,多是隻容許超級用戶使用該命令,也多是全部用戶均可以使用該命令。

crontab命令的語法格式以下:

crontab [-u user] file

crontab [-u user]{-l|-r|-e}

第一種格式用於安裝一個新的crontab 文件,安裝file所指的文件。

-u 若是使用該選項,也就是指定了是哪一個具體用戶的crontab 文件將被修改。若是不指定該選項,crontab 將默認是操做者本人的crontab 。可是請注意,若是使用了su命令再使用crontab 命令極可能就會出現混亂的狀況。因此若是是使用了su命令,最好使用-u選項來指定到底是哪一個用戶的crontab文件。

-l 在標準輸出上顯示當前的crontab。

-r 刪除當前的crontab文件。

-e 使用VISUAL或者EDITOR環境變量所指的編輯器編輯當前的crontab文件。當結束編輯離開時,編輯後的文件將自動安裝。

如何輸入須要執行的命令和時間html

該文件中每行都包括六個域,其中前五個域是指定命令被執行的時間,最後一個域是要被執行的命令。每一個域之間使用空格或者製表符分隔。格式以下:

minute hour day-of-month month-of-year day-of-week commands

第一項是分鐘,第二項是小時,第三項是一個月的第幾天,第四項是一年的第幾個月,第五項是一週的星期幾,第六項是要執行的命令。這些項都不能爲空,必須填入。若是用戶不須要指定其中的幾項,那麼可使用*代替。由於*是統配符,能夠代替任何字符,因此就能夠認爲是任什麼時候間,也就是該項被忽略了。每項的合法範圍以下:

minute 
00-59 
hour 
00-23,其中00點就是晚上12點 
day-of-month 
01-31 
month-of-year 
01-12 
day-of-week 
0-6,其中週日是0 

除了數字還有幾個個特殊的符號就是"*"、"/"和"-"、",",*表明全部的取值範圍內的數字,"/"表明每的意思,"*/5"表示每5個單位,"-"表明從某個數字到某個數字,","分開幾個離散的數字。幾個例子:

天天早上6點 

0 6 * * * 
晚上11點到早上8點之間每兩個小時,早上八點 

0 23-7/2,8 * * * echo "Have a good dream:)" >> /tmp/test.txt 

每月的4號和每一個禮拜的禮拜一到禮拜三的早上11點 

0 11 4 * 1-3 command 

5,15,25,35,45,55 16,17,18 * * * command

這就是表示任意天任意月,其實就是天天的下午4點、5點、6點的5 min、15 min、25 min、35 min、45 min、55 min時執行命令。

在每週一,三,五的下午3:00系統進入維護狀態,從新啓動系統。那麼在crontab 文件中就應該寫入以下字段:

00 15 * * 1,3,5 shutdown -r +5

而後將該文件存盤爲foxy.cron,再鍵入crontab foxy.cron安裝該文件。

每小時的10分,40分執行用戶目錄下的innd/bbslin這個指令:

10,40 * * * * innd/bbslink

每小時的1分執行用戶目錄下的bin/account這個指令:

1 * * * * bin/account

天天早晨三點二十分執行用戶目錄下以下所示的兩個指令(每一個指令以;分隔):

20 3 * * * (/bin/rm -f expire.ls logins.bad;bin/expire$#@62;expire.1st)

 每一年的一月和四月,4號到9號的3點12分和3點55分執行/bin/rm -f expire.1st這個指令,並把結果添加在mm.txt這個文件以後(mm.txt文件位於用戶本身的目錄位置)。

12,55 3 4-9 1,4 * /bin/rm -f expire.1st$#@62;$#@62;mm.txt


vim

crontab是Unix和Linux用於設置週期性被執行的指令,
是很經常使用的技術,不少任務都會設置在crontab循環執行。編輯器

crontab的使用
語法格式以下:
crontab [-u user] file
crontab [-u user] [-l|-e|-r]
//新建
crontab file
安裝一個新的crontab 文件,安裝file所指的文件,文件位置在/var/spool/cron目錄下,系統會自動生成
一個與用戶名同名的crontab文件。
crontab -l 列出全部crontab
crontab -e
編輯crontab的內容,編輯保存後會從新自動安裝
crontab -r
刪除當前的全部crontab
以上每一個命令均可以用-u來指定用戶,不加則爲當前用戶spa

crontab的限制
可使用crontab命令的用戶是有限制的
若是/etc/cron.allow文件存在,那麼只有其中列出的用戶才能使用該命令;
若是該文件不存 在但cron.deny文件存在,那麼只有未列在該文件中的用戶才能使用crontab命令;
若是兩個文件都不存在,那就取決於一些參數的設置,多是隻容許超級用戶使用該命令,也多是全部用戶均可以使用該命令。htm

執行的命令和時間blog

 

原文:http://blog.sina.com.cn/s/blog_49f8dc400100tzn7.html進程

相關文章
相關標籤/搜索