第1章 Linux系統(tǒng)定時任務Cron(d)服務應用實踐
1.1 Cron(d)介紹
1.1.1 什么是Cron
Cron是Linux系統(tǒng)中以后臺進程模式周期性執(zhí)行命令或指定程序任務的服務軟件。默認情況下,安裝完Linux操作系統(tǒng)之后等孵,Cron服務軟件便會啟動,服務對應的進程名字為Crond齐帚,Crond服務會定期(默認每分鐘檢查一次)檢查系統(tǒng)中是否有需要執(zhí)行的任務工作計劃滑沧。如果有,便會根據(jù)其預先設定的定時任務規(guī)則自動執(zhí)行該定時任務工作苍柏。這個Crond定時任務服務就相當于我們平時使用的鬧鐘(或手機鬧鐘)肪康。
Linux系統(tǒng)中的Cron定時任務的最快執(zhí)行頻率是每分鐘執(zhí)行一次荚恶,因此如果是需要以秒為單位執(zhí)行計劃任務,Cron 就搞不定了梅鹦。
1.1.2 為什么使用Crond定時任務
Linux 運維工程師的職責之一就是確保數(shù)據(jù)安全裆甩,那么,其日常工作任務之一就是不斷地對數(shù)據(jù)進行備份齐唆,而很多時候因為白天系統(tǒng)業(yè)務繁忙嗤栓,所以數(shù)據(jù)備份的工作只能放到晚上執(zhí)行,這就需要Linux系統(tǒng)的定時任務Cron工具了,Cron 工具很好地幫我們解決了需要周期性自動備份的運維工作茉帅。
1.1.3 Linux系統(tǒng)下定時任務軟件
1叨叙、 at定時任務軟件(依賴于atd服務)適合僅執(zhí)行一次就結束的調(diào)度任務工作。要使得at這個軟件設定的配置生效堪澎,還需要提前啟動一個名為atd的服務才行擂错,這個工具在工作中的使用需求很少,簡單了解一下即可樱蛤。
2钮呀、 Cron定時任務軟件依賴于Crond服務。正如前面所說昨凡,通過crontab命令可以配置周期性執(zhí)行的定時任務工作計劃爽醋。要使得crontab命令設定的配置生效,還需要先啟動一個服務Crond才行便脊。這個Cron工具(對應的crontab命令以及依賴的Crond服務)是運維工程師在生產(chǎn)工作中最常用的工具蚂四,請務必掌握。
3哪痰、 anacron定時任務軟件主要是為非7X24小時開機的服務器準備的遂赠,anacron 并不能指定具體時間執(zhí)行任務工作,而是以天為周期或者在系統(tǒng)每次開機后執(zhí)行任務工作晌杰。它會檢測服務器停機期間應該執(zhí)行但是并沒有進行的任務工作跷睦,并將該任務執(zhí)行一遍。
1.1.4 Linux系統(tǒng)定時任務Cron(d)
在Linux系統(tǒng)中肋演,Cron是定時任務的軟件名送讲,Crond是服務進程名,而crontab命令是用來設置定時任務規(guī)則的配置命令惋啃。
1、 用戶定時任務計劃
Crond服務在工作時會以分鐘為單位查看/var/spool/cron路徑下以系統(tǒng)用戶名命名的定時任務文件监右,確定是否有需要執(zhí)行的任務計劃边灭。
2、 系統(tǒng)定時任務計劃
Crond服務除了執(zhí)行用戶定時任務計劃(/var/spool/cron目錄)意外健盒,還會周期性地自動執(zhí)行和操作系統(tǒng)相關的定時任務工作绒瘦。
1.2 用戶定時任務Cron(d)使用說明
1.2.1 crontab定時任務編輯命令參數(shù)
注:使用crontab ,命令編輯的文件實際上就是在操作“/var/spool/cron/當前用戶名”這樣的文件扣癣。
1.2.2 定時任務軟件相關軟件及路徑說明
1.2.3 以用戶定時任務crontab命令編輯內(nèi)容格式
默認情況下惰帽,待用戶建立定時任務規(guī)則后,該規(guī)則會在/var/spool/cron中記錄對應的配置文件父虑,其crontab配置文件對應的文件名與登錄的用戶名一致该酗,如: root 用戶的定時任務配置文件為/var/spool/cron/root。
利用crontab命令編寫定時任務的書寫格式很簡單,規(guī)則一般分為6個段(每個段通過空格來分隔)呜魄,前5段為時間設定段悔叽,第6段為所要執(zhí)行的命令或腳本任務段。
1.2.3.1 用戶定時任務中各段的含義
時間記憶口訣:分時日月周爵嗅。
1.2.3.2 用戶定時任務中特殊符號的含義
注意:
1娇澎、 在編輯定時任務文件后,無需重啟定時任務睹晒,Crond會自動檢查更改的變化趟庄。
2、 當定時任務不能正確執(zhí)行時伪很,請查看定時任務日志文件(/var/log/cron)獲取故障信息戚啥。
1.3 生產(chǎn)環(huán)境下的定時Cron書寫要領
要領1:為定時任務規(guī)則加必要的注釋
要領2:所有的定時任務盡量都以腳本的形式執(zhí)行
要領3:在執(zhí)行的Shell腳本前加上/bin/sh
要領4:定時任務中命令或腳本的結尾加>/dev/null 2>&1
要領5:在指定用戶下執(zhí)行相關定時任務
要領6:再生產(chǎn)任務計劃程序中不要隨意打印輸出信息
要領7:定時任務執(zhí)行的腳本要存放到規(guī)范路徑下
要領8:配置定時任務要規(guī)范操作過程,減少出錯
要領9:定時任務腳本中程序命令及路徑盡量用全路徑
要領10:時間變量%號要用反斜線轉義
要領11:若腳本中調(diào)用了系統(tǒng)環(huán)境變量是掰,要重新定時
1.4 調(diào)試Cron定時任務的技巧
1虑鼎、 增大執(zhí)行任務頻率調(diào)試任務
2、 調(diào)整系統(tǒng)時間調(diào)試任務(不能用于生產(chǎn)環(huán)境)
3键痛、 通過腳本日志輸出調(diào)試任務
4炫彩、 通過Crond定時任務服務日志調(diào)試定時任務