在操作和維護過程中,我們都會遇到這樣的問題,即Linux系統(tǒng)如何定期或定期執(zhí)行某些命令,例如: B. Oracle操作和維護人員。我希望Oracle用戶可以定期清除存檔日志,以避免存檔日志。 太大會導(dǎo)致無法執(zhí)行Oracle數(shù)據(jù)的問題。 我們?nèi)绾螌崿F(xiàn)這個目標(biāo)? 今天,我們將討論用于Linux同步任務(wù)的crontab命令,該命令足夠詳細,因此您無需以其他任何方式理解它。
一、crond簡介
crond 是linux系統(tǒng)中用來周期性地執(zhí)行某種任務(wù)或等待處理某些事件的一個守護進程,類似于windows中的計劃任務(wù)。linux系統(tǒng)安裝后,會默認安裝此服務(wù),并會自動啟動crond進程,crond進程每分鐘會定期檢查是否有要執(zhí)行的任務(wù),如果有要執(zhí)行的任務(wù),則自動執(zhí)行該任務(wù)。
Linux下的任務(wù)調(diào)度分為兩類,系統(tǒng)任務(wù)調(diào)度和用戶任務(wù)調(diào)度。
系統(tǒng)任務(wù)調(diào)度:系統(tǒng)周期性所要執(zhí)行的工作,比如寫緩存數(shù)據(jù)到硬盤、日志清理等。在/etc目錄下有一個crontab文件,這個就是系統(tǒng)任務(wù)調(diào)度的配置文件。
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
前三行是用來配置crond任務(wù)運行的環(huán)境變量,第一行SHELL變量指定了系統(tǒng)要使用哪個shell,這里是bash,第二行PATH變量指定了系統(tǒng)執(zhí)行命令的路徑,第三行MAILTO變量指定了crond的任務(wù)執(zhí)行信息將通過電子郵件發(fā)送給root用戶,如果MAILTO變量的值為空,則表示不發(fā)送任務(wù)執(zhí)行信息給用戶。剩余的部分就是對crontab命令的詳解注釋。
minute: 表示分鐘,可以是從0到59之間的任何整數(shù)。hour:表示小時,可以是從0到23之間的任何整數(shù)。day:表示日期,可以是從1到31之間的任何整數(shù)。month:表示月份,可以是從1到12之間的任何整數(shù)。week:表示星期幾,可以是從0到7之間的任何整數(shù),這里的0或7代表星期日。command:要執(zhí)行的命令,可以是系統(tǒng)命令,也可以是自己編寫的腳本文件。
在以上各個字段中,還可以使用以下特殊字符:
星號(*):代表所有可能的值,例如month字段如果是星號,則表示在滿足其它字段的制約條件后每月都執(zhí)行該命令操作。
逗號(,):可以用逗號隔開的值指定一個列表范圍,例如,“1,2,5,7,8,9”
中杠(-):可以用整數(shù)之間的中杠表示一個整數(shù)范圍,例如“2-6”表示“2,3,4,5,6”
正斜線(/):可以用正斜線指定時間的間隔頻率,例如“0-23/2”表示每兩小時執(zhí)行一次。同時正斜線可以和星號一起使用,例如*/10,如果用在minute字段,表示每十分鐘執(zhí)行一次。
用戶任務(wù)調(diào)度:用戶定期要執(zhí)行的工作,比如用戶數(shù)據(jù)備份、定時郵件提醒等。用戶可以使用 crontab 工具來定制自己的計劃任務(wù)。所有用戶定義的crontab 文件都被保存在 /var/spool/cron目錄中。其文件名與用戶名一致。
額外說下cron使用者權(quán)限文件作用:
文件:/etc/cron.deny,該文件中所列用戶不允許使用crontab命令
文件:/etc/cron.allow,該文件中所列用戶允許使用crontab命令
文件:/var/spool/cron/,所有用戶crontab文件存放的目錄,以用戶名命名
二、crond服務(wù)
盡管來說在安裝linux系統(tǒng)之后crond服務(wù)會自動安裝并自動啟用。但是這里還是有必要在介紹一遍如何安裝crontab服務(wù)。
yum install crontabs
服務(wù)操作說明:/sbin/service crond start //啟動服務(wù)/sbin/service crond stop //關(guān)閉服務(wù)/sbin/service crond restart //重啟服務(wù)/sbin/service crond reload //重新載入配置/sbin/service crond status //啟動服務(wù)
查看crontab服務(wù)是否已設(shè)置為開機啟動,執(zhí)行命令:ntsysv,然后對服務(wù)進行設(shè)置。當(dāng)然,也可以使用命令:chkconfig –level 35 crond on加入開機自動啟動。
三、crontab命令詳解
1.命令格式:
crontab [-u user] file
crontab [-u user] [ -e | -l | -r ]
2.命令功能:
通過crontab 命令,我們可以在固定的間隔時間執(zhí)行指定的系統(tǒng)指令或 shell script腳本。時間間隔的單位可以是分鐘、小時、日、月、周及以上的任意組合。這個命令非常設(shè)合周期性的日志分析或數(shù)據(jù)備份等工作。
3.命令參數(shù):
-u user:用來設(shè)定某個用戶的crontab服務(wù),例如,“-u ixdba”表示設(shè)定ixdba用戶的crontab服務(wù),此參數(shù)一般有root用戶來運行。
file:file是命令文件的名字,表示將file做為crontab的任務(wù)列表文件并載入crontab。如果在命令行中沒有指定這個文件,crontab命令將接受標(biāo)準(zhǔn)輸入(鍵盤)上鍵入的命令,并將它們載入crontab。
-e:編輯某個用戶的crontab文件內(nèi)容。如果不指定用戶,則表示編輯當(dāng)前用戶的crontab文件。
-l:顯示某個用戶的crontab文件內(nèi)容,如果不指定用戶,則表示顯示當(dāng)前用戶的crontab文件內(nèi)容。
-r:從/var/spool/cron目錄中刪除某個用戶的crontab文件,如果不指定用戶,則默認刪除當(dāng)前用戶的crontab文件。
-i:在刪除用戶的crontab文件時給確認提示。
四、常見的crontab使用實例
5.使用實例
實例1:每1分鐘執(zhí)行一次/cs.sh腳本
命令:*/1 * * * * /cs.sh腳本
實例2:每小時的第5,第1,0分鐘執(zhí)行
命令:5,10 * * * * /cs.sh腳本
實例3:在上午9點到10點的第1和第30分鐘執(zhí)行
命令:1,30 9-10 * * * cs.sh腳本
實例4:每隔兩天的上午8點到11點的第3和第15分鐘執(zhí)行
命令:3,15 8-11 */2 * * cs.sh腳本
實例5:每個星期一的上午8點到11點的第3和第15分鐘執(zhí)行
命令:3,15 8-11 * * 1 cs.sh腳本
實例6:每晚的21:30重啟smb
命令:30 21 * * * /etc/init.d/smb restart
實例7:每月1、10、22日的4 : 45重啟smb
命令:45 4 1,10,22 * * /etc/init.d/smb restart
實例8:每月的4號與每周一到周三的11點重啟smb
命令:0 11 4 * mon-wed /etc/init.d/smb restart
怎么樣,看完這篇文章之后是否對crontab服務(wù)更加理解了呢?掌握之后,是不是瞬間覺得升職加薪就在眼前了?