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