例行性工作調度at、cron、anacron

例行性工作:系統在某個時間點會自動進行的工作

  • 只執行一次就結束調度:at,服務爲atd

  • 循環執行的工作調度:crontab,服務爲crond

常見例行性工作

  • 日誌輪替(log rotate)

  • 日誌分析(log watch)

  • 更新數據庫

  • 刪除臨時文件(tmpwatch)

  • 網絡有關服務檢查


at:執行一次的工作調度 

1:生成工作的流程

  • at命令生成要運行的工作

  • 將工作以文本形式寫入/var/spool/at目錄

  • 等待atd服務取用執行

2:at工作調度規則

  • /etc/at.allow:寫在這文件中的用戶才能使用at

  • /etc/at.deny:不存在/etc/at.allow時寫在這文件中的不能用at

  • 兩個文件都沒有時,只有root能用at

3:使用

  • 啓動服務:atd

  • at [-m 以email方式通知已完成工作] [-c 列出工作的命令]

  • atq查看工作,atrm [job'numbr 刪除工作]

wKioL1WI4i-zsaGmAAEzPR3KpOs488.jpg

  • batch:使用方法和at一樣,當cpu負載小於0.8時,才進行後臺任務


cron:循環執行例行性工作調度

1:工作流程

  • crontab命令生成要運行的工作

  • 將工作以文本形式寫入/var/spool/cron目錄

  • cron每分鐘讀取一次/var/spool/cron

  • cron執行每一項工作都記錄到/var/log/cron日誌文件中(at沒有)

  • /etc/cron.allow 和 /etc/cron.deny   (和at一樣)

2:使用

crontab [-e 編輯內容] [-l 查看內容] [-r 刪除所有工作] [-u 指定用戶編輯]    

// 進入一個文本界面(其實是執行/usr/bin/crontab文件)

  • 格式:分   時   日   月   周   命令

  • 特殊字符意義

* 任何時刻

,與:* 3,4 * * * command 三點和四點

- 至:* 3-5 * * * command 三點到五點

/n 每:*/3 * * * * command 每三分鐘一次

*/5  *  *  *  *  /home/boxin/test.sh    //每5分鐘執行一次命令

59  23  1  1  *  mail my < /home/boxin/hello.txt    //每個一月一號23:59都會發一封郵件給my

3:系統配置文件:/etc/crontab

  • cron這個服務每分鐘會讀取一次 /etc/crontab 和 /var/spool/cron的數據

  • /etc/crontabroot可直接編輯此文件寫入工作

[root@boxin ~]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root   // 有錯誤時發郵箱給root
HOME=/
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |

# *  *  *  *  * user-name command to be executed

4:anacron可喚醒停機期間的工作任務

//不是單獨的服務,是對crontab的補充,在關機的期間內,無法進行例行性工作,通過anacron工具,可以在開機時檢測停機期間需要進行但卻沒有進行的crontab任務,並執行

  • 根據目前時間與上次運行時間戳的對比,差異時間大於或等於工作運行週期,就會進行acrontab未進行的工作調度


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章