站長新書 站長開講 首頁 最新文章 站長著作及審校 FreeBSD 筆記 Linux 筆記 Windows 筆記 虛擬化筆記 網管人雜誌 遊山玩水 關於本站
站長新書 VMware vSphere ICM 團購開跑了!!

邁向 RHCE 之路 (Day12) - 排程 (at、crontab、anacron)

前言

以下將介紹三種常用於 CentOS 上的排程作業:

at

crontab

anacron

Anacron

它適合運作於測試機或筆記型電腦上這種 非長期處於開機狀態 之用,因為它採用的是 頻率 來執行排程工作,以 /etc/cron.daily 執行的方式為 1天 執行一次,當 CentOS 主機開機後若發現今天尚未執行排程工作便會在 5分鐘 之後執行 /etc/cron.daily 目錄下的執行檔案,當執行排程工作完成後會在 /var/spool/anacron/cron.daily 檔案中把今天的日期寫入,表示排程執行完畢而此排程的設定檔為 /etc/anacrontab。(只有系統管理者 root 能修改此檔)

 #cat /etc/anacrontab
  SHELL=/bin/sh
  PATH=/sbin:/bin:/usr/sbin:/usr/bin
  MAILTO=root
  RANDOM_DELAY=45
  START_HOURS_RANGE=3-22
  1       5       cron.daily              nice run-parts /etc/cron.daily
  7       25      cron.weekly             nice run-parts /etc/cron.weekly
  @monthly 45     cron.monthly            nice run-parts /etc/cron.monthly
 #cat /var/spool/anacron/cron.{dai,week,month}ly
  20111017       //cron.daily 最後一次排程執行時間
  20111014       //cron.weekly 最後一次排程執行時間
  20111007       //cron.monthly 最後一次排程執行時間

crontab

從 CentOS 6 開始 /etc/crontab 內容已經沒有排程工作的相關內容了,改為由 anacron 取代為預設的系統排程作業 (CentOS 5.x 時預設的系統排程檔案即為 /etc/crontab 內容),若您不想使用 anacron 則請移除 cronie-anacron 套件即可,並且安裝 cronie-noanacron 套件將 crontab 排程設定找回來,安裝後 「/etc/cron.d/dailyjobs」 排程檔案與舊有的 /etc/crontab 內容相同。

 #yum -y remove cronie-anacron      //移除 anacron 及相關套件
 #yum -y install cronie-noanacron   //安裝 crontab 及相關套件
 #rpm -ql cronie-noanacron          //查詢安裝 crontab 套件的相關檔案
  /etc/cron.d/dailyjobs
 #cat /etc/cron.d/dailyjobs
  SHELL=/bin/bash
  PATH=/sbin:/bin:/usr/sbin:/usr/bin
  MAILTO=root
  HOME=/
 #run-parts
  02 4 * * * root [ ! -f /etc/cron.hourly/0anacron ] && run-parts /etc/cron.daily
  22 4 * * 0 root [ ! -f /etc/cron.hourly/0anacron ] && run-parts /etc/cron.weekly
  42 4 1 * * root [ ! -f /etc/cron.hourly/0anacron ] && run-parts /etc/cron.monthly
 #chkconfig crond --list            //確定主機啟動時會帶起 crond 服務
  crond           0:off   1:off   2:on    3:on    4:on    5:on    6:off

最後請記得修改 anacron 設定 (/etc/anacrontab) 或 crontab 設定 (/etc/crontab) 之後都 不需要把 crond 服務重新啟動,因為 crond 程序會在 每分鐘 自動監控 /etc/cron.d 及 /var/spool/cron 資料夾變化,若有偵測到內容變化會自動將變化載入記憶體中,所以不需要修改後把 crond 服務重新啟動。

收集系統資訊後定期寄送給管理人員

在 CentOS 系統中 [LogWatch] 套件安裝後可負責收集系統狀態及相關網路服務運作資訊。我們可以在每天定期發送的 cron.daily 資料夾中,發現 0logwatch 這隻 Script。也就是說,系統會在每天凌晨 4 點 02 分時,透過此 Script 將系統中系統、硬體、服務的資訊收集後,寄送給各個管理者。接下來便說明相關資訊的設定方法,如:由哪台主機寄出收集後的資訊、寄件對象、系統資訊收集分析的等級、收集主機服務運作的狀態設定等,我們可以將相關設定值寫入至 LogWatch 設定檔 /etc/logwatch/conf/logwatch.conf 內,操作中相關設定值參數及說明如下:

下列為筆者的 LogWatch 設定檔設定內容,若您需要更詳細的參數設定內容可參考 "/usr/share/logwatch/default.conf/logwatch.conf" 設定檔內容:

 #yum -y install logwatch               //安裝 logwatch 套件
 #cat /etc/logwatch/conf/logwatch.conf  //修改 LogWatch 設定檔
  MailFrom = Web                        //此主機擔任的服務名稱
  MailTo = weithenn@weithenn.org        //管理者郵件位址
  Detail = High                         //收集主機資訊等級
  Service = All                         //收集主機服務運作項目
  Service = -yum                        //不收集 YUM 服務項目

設定完畢之後,CentOS 主機便會自動於每天凌晨 4 點 02 分時,收集主機資訊後寄送至管理者郵件信箱內。如果您想要立即收到資訊郵件,可以手動執行 logwatch 指令,命令主機立刻收集資訊並寄送郵件,或配合參數 --print 直接顯示收集到的資訊,查看收集到的資訊而不寄送郵件(此資訊和資訊郵件的內容完全相同)。您還可以配合參數 --service ,僅顯示收集的服務名稱運作狀態。

 #logwatch --print                     //立即顯示資訊郵件內容 (預設顯示昨天的系統資訊)
 #logwatch --service sudo --print      //僅顯示資訊郵件中 sudo 資訊
 #logwatch                             //立即寄送資訊郵件給管理者
Go To Oddmuse OrgGo To FreeBSD OrgCreative Commons 2.5 Taiwansitestates.com