Linux系統(tǒng)定時任務(wù)Cron(d)服務(wù)應(yīng)用實踐
1.1 Cron(d)介紹
1.1.1 什么是Cron
Cron是Linux系統(tǒng)中以后臺進程模式周期性執(zhí)行命令或指定程序任務(wù)的服務(wù)軟件抛计。默認情況下谜诫,安裝完Linux操作系統(tǒng)之后菌赖,Cron服務(wù)軟件便會啟動,服務(wù)對應(yīng)的進程名字為Crond白粉,Crond服務(wù)會定期(默認每分鐘檢查一次)檢查系統(tǒng)中是否有需要執(zhí)行的任務(wù)工作計劃。如果有佛吓,便會根據(jù)其預(yù)先設(shè)定的定時任務(wù)規(guī)則自動執(zhí)行該定時任務(wù)工作克蚂。這個Crond定時任務(wù)服務(wù)就相當于我們平時使用的鬧鐘(或手機鬧鐘)。
Linux系統(tǒng)中的Cron定時任務(wù)的最快執(zhí)行頻率是每分鐘執(zhí)行一次瞻赶,因此如果是需要以秒為單位執(zhí)行計劃任務(wù)往堡,Cron 就搞不定了械荷。
1.1.2 為什么使用Crond定時任務(wù)
Linux 運維工程師的職責之一就是確保數(shù)據(jù)安全,那么虑灰,其日常工作任務(wù)之一就是不斷地對數(shù)據(jù)進行備份吨瞎,而很多時候因為白天系統(tǒng)業(yè)務(wù)繁忙,所以數(shù)據(jù)備份的工作只能放到晚上執(zhí)行穆咐,這就需要Linux系統(tǒng)的定時任務(wù)Cron工具了颤诀,Cron 工具很好地幫我們解決了需要周期性自動備份的運維工作。
1.1.3 Linux系統(tǒng)下定時任務(wù)軟件
Cron定時任務(wù)軟件依賴于Crond服務(wù)对湃。正如前面所說崖叫,通過crontab命令可以配置周期性執(zhí)行的定時任務(wù)工作計劃。要使得crontab命令設(shè)定的配置生效拍柒,還需要先啟動一個服務(wù)Crond才行心傀。這個Cron工具(對應(yīng)的crontab命令以及依賴的Crond服務(wù))是運維工程師在生產(chǎn)工作中最常用的工具。
1.1.4 Linux系統(tǒng)定時任務(wù)Cron(d)
在Linux系統(tǒng)中拆讯,Cron是定時任務(wù)的軟件名脂男,Crond是服務(wù)進程名,真正實現(xiàn)定時任務(wù)服務(wù)种呐,而crontab命令是用來設(shè)置定時任務(wù)規(guī)則的配置命令宰翅。
1、 用戶定時任務(wù)計劃
Crond服務(wù)在工作時會以分鐘為單位查看/var/spool/cron路徑下以系統(tǒng)用戶名命名的定時任務(wù)文件爽室,確定是否有需要執(zhí)行的任務(wù)計劃汁讼。
2、 系統(tǒng)定時任務(wù)計劃
Crond服務(wù)除了執(zhí)行用戶定時任務(wù)計劃(/var/spool/cron目錄)意外阔墩,還會周期性地自動執(zhí)行和操作系統(tǒng)相關(guān)的定時任務(wù)工作嘿架。
1.2 用戶定時任務(wù)Cron(d)使用說明
1.2.1 crontab定時任務(wù)編輯命令參數(shù)
注:使用crontab ,命令編輯的文件實際上就是在操作“/var/spool/cron/當前用戶名”這樣的文件啸箫。即:
crontab –l == cat /var/spool/cron/當前用戶名
crontab –e == vim /var/spool/cron/當前用戶名
1.2.2 定時任務(wù)軟件相關(guān)軟件及路徑說明
1.2.3 以用戶定時任務(wù)crontab命令編輯內(nèi)容格式
默認情況下耸彪,待用戶建立定時任務(wù)規(guī)則后,該規(guī)則會在/var/spool/cron中記錄對應(yīng)的配置文件筐高,其crontab配置文件對應(yīng)的文件名與登錄的用戶名一致搜囱,如: root 用戶的定時任務(wù)配置文件為/var/spool/cron/root。
利用crontab命令編寫定時任務(wù)的書寫格式很簡單柑土,規(guī)則一般分為6個段(每個段通過空格來分隔)蜀肘,前5段為時間設(shè)定段,第6段為所要執(zhí)行的命令或腳本任務(wù)段稽屏。
1.2.3.1 用戶定時任務(wù)中各段的含義
時間記憶口訣:分時日月周扮宠。
1.2.3.2 用戶定時任務(wù)中特殊符號的含義
注意:
1、 在編輯定時任務(wù)文件后,無需重啟定時任務(wù)坛增,Crond會自動檢查更改的變化获雕。
2、 當定時任務(wù)不能正確執(zhí)行時收捣,請查看定時任務(wù)日志文件(/var/log/cron)獲取故障信息届案。
1.3 運維規(guī)范:
腳本位置:/server/scripts
軟件位置:/server/tools
編譯位置:/application/軟件名字-版本,然后創(chuàng)建軟鏈接
1.4 生產(chǎn)環(huán)境下的定時Cron書寫要領(lǐng)
要領(lǐng)1:為定時任務(wù)規(guī)則加必要的注釋
要領(lǐng)2:所有的定時任務(wù)盡量都以腳本的形式執(zhí)行
要領(lǐng)3:在執(zhí)行的Shell腳本前加上/bin/sh
要領(lǐng)4:定時任務(wù)中命令或腳本的結(jié)尾加>/dev/null 2>&1
要領(lǐng)5:在指定用戶下執(zhí)行相關(guān)定時任務(wù)
要領(lǐng)6:再生產(chǎn)任務(wù)計劃程序中不要隨意打印輸出信息
要領(lǐng)7:定時任務(wù)執(zhí)行的腳本要存放到規(guī)范路徑下
要領(lǐng)8:配置定時任務(wù)要規(guī)范操作過程罢艾,減少出錯
要領(lǐng)9:定時任務(wù)腳本中程序命令及路徑盡量用全路徑
要領(lǐng)10:時間變量%號要用反斜線轉(zhuǎn)義
要領(lǐng)11:若腳本中調(diào)用了系統(tǒng)環(huán)境變量楣颠,要重新定時
要領(lǐng)12:出錯或無法執(zhí)行,就檢查/var/log/cron日志
1.5 調(diào)試Cron定時任務(wù)的技巧
1咐蚯、 增大執(zhí)行任務(wù)頻率調(diào)試任務(wù)
2童漩、 調(diào)整系統(tǒng)時間調(diào)試任務(wù)(不能用于生產(chǎn)環(huán)境)
3、 通過腳本日志輸出調(diào)試任務(wù)
4春锋、 通過Crond定時任務(wù)服務(wù)日志調(diào)試定時任務(wù)