例行性工作:系統在某個時間點會自動進行的工作
只執行一次就結束調度: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 刪除工作]
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/crontab:root可直接編輯此文件寫入工作
[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未進行的工作調度