天天看點

Linux學習之CentOS(十二)--crontab指令的使用方法

crontab指令常見于Unix和Linux的作業系統之中,用于設定周期性被執行的指令。該指令從标準輸入裝置讀取指令,并将其存放于"crontab"檔案中,以供之後讀取和執行。

在Linux系統中,Linux任務排程的工作主要分為以下兩類:

1、系統執行的工作:系統周期性所要執行的工作,如備份系統資料、清理緩存

2、個人執行的工作:某個使用者定期要做的工作,例如每隔10分鐘檢查郵件伺服器是否有新信,這些工作可由每個使用者自行設定

一、/etc/crontab、/etc/cron.deny 、 /etc/cron.allow檔案介紹

系統排程的任務一般存放在/etc/crontab這個檔案下,裡面存放了一些系統運作的排程程式,通過指令我們可以看一下裡面的内容:

這些任務都會是系統在運作起來後自動進行排程的。同時在/etc目錄下還存放了/etc/cron.deny 和 /etc/cron.allow 檔案

/etc/cron.deny 表示不能使用crontab 指令的使用者

/etc/cron.allow 表示能使用crontab的使用者。

如果兩個檔案同時存在,那麼/etc/cron.allow 優先。

如果兩個檔案都不存在,那麼隻有root使用者可以安排作業。

二、.crontab指令文法及其各個參數含義

crontab指令的文法為:

注意:crontab 是用來讓使用者在固定時間或固定間隔執行程式之用,換句話說,也就是類似使用者的時程表。-u user 是指設定指定 user 的時程表,這個前提是你必須要有其權限(比如說是 root)才能夠指定他人的時程表。如果不使用 -u user 的話,就是表示設定自己的時程表。

各個參數說明:

三、crontab指令的格式

我們如果要建立自己的一個任務排程,可以使用  crontab -e 這個指令,如:

此時會進入到vi編輯界面,來編寫我們要排程的任務,crontab排程指令的格式如下:

排程指令的規則:

字段名稱

說明

取值範圍

分鐘

每小時的第幾分鐘執行

0-59

小時  

每日的第幾個小時執行

0-23

日期

每月的第幾天執行

1-31

月曆

每年的第幾月執行

1-12

星期

每周的第幾天執行

0-6

指令名稱

欲執行的指令及參數

crontab指令中的一些常用特殊符号:

符号 

*

表示任何時刻

,

表示分割

表示一個段,如第二段裡: 1-5,就表示1到5點

/n

表示每個n的機關執行一次,如第二段裡,*/1, 就表示每隔1個小時執行一次指令。也可以寫成1-23/1.

下面給出一些crontab指令的執行個體:

四、建立我們自己的crontab指令

①執行個體一:如果我希望每隔一分鐘,就将系統的時間寫入到/home目錄下的date1.txt檔案裡面,則輸入下面的指令

此時我們發現,我們剛才編寫的那個crontab指令已經正常在運作了,隻要沒有執行終止指令或者系統關機,這個指令就會一直執行下去

②執行個體二:如果我們需要同時完成兩件指令,即每隔一分鐘就将系統時間寫入到/home目錄下的date1.txt檔案裡面,同時再每隔一分鐘将該date1.txt檔案拷貝到/目錄下生成一個date2.txt的檔案。這時我們通常該怎麼做呢?方法有兩種:

a) 最簡單最直接的方法(不推薦):直接輸入crontab -e 指令,在後面再追加一個指令即可,如:

最後我們退出儲存即可,此時我們可以發現/目錄下已經有了date2.txt這個檔案了,打開後可以看到其内容和date1.txt一樣:

雖然這種方法比較簡單,但是并不推薦這種,因為如果指令一多的話,并且如果我需要不同使用者執行不同的指令時,這種方法在維護起來不友善,是以這裡介紹另外一種方法。

b) 首先編寫一個可執行的sh檔案,然後将我們要執行的任務寫着sh檔案裡面,最後通過crontab來執行我們的sh檔案即可(推薦)

首先我們在/目錄下編寫一個task.sh的檔案,裡面的内容就是我們剛要執行的兩條指令:

此時我們的task.sh還不是可執行檔案,通過ls -l指令我們可以看到

是以我們需要通過chmod指令來修改task.sh的權限:

此時再檢視,就發現task.sh已經是可執行檔案了:

然後我們輸入crontab -e 指令,将之前的兩條指令删除掉,或者在前面加 # 号注釋掉:

這時我們發現根目錄下面已經存在了date3.txt檔案了,打開就可以發現裡面的内容為:

五、crontab的其他一些指令

如果我們需要列出自己建立的任務排程都有哪些指令,可以使用 crontab -l 指令來檢視

如果我們需要終止自己剛建立的任務排程,則使用 crontab -r 指令即可

此時我們可以發現,crontab裡面的任務都已經沒有了

六、cron服務的啟動

我們可以通過 chkconfig --list | grep cron 指令來檢視cron服務的啟動情況:

我們可以看到,系統啟動級别如果是1-4,cron服務都會開機自動啟動的,我們可以通過如下指令來設定該服務的啟動項:

本篇随筆主要記錄了Linux系統中的crontab指令的常見用法,在後續學習中将繼續記錄自己的學習心得。

本文轉自sandshell部落格51CTO部落格,原文連結http://blog.51cto.com/sandshell/1947755如需轉載請自行聯系原作者

sandshell

繼續閱讀