1.linxu任務計劃:vim
任務計劃:bash
在將來時間點執行一次任務:at,batchide
週期性執行任務:crontab工具
電子郵件服務:post
smtp:simple mail transmission protocolspa
/var/spool/mail/USERNAME 我的郵件緩衝目錄接口
pop3:post office protocol隊列
imap4:internet mail access protocol進程
MUA:mail命令crontab
mail:
mail:進入交互式收發郵件接口
mail -s "SUBJECT" user@hostname
mail -s "SUBJECT" user@hotname < echo "aaa"
command | mail -s "SUBJECT" username@hostname
at命令:
承載將來執行的命令
執行使用做業隊列
默認爲a隊列
Crtl+d
at [option].. time
time命令:
1.絕對時間 HH:MM MMDD[CC]YY
2.相對時間 now+時間
minut hour day week
3.模糊時間
midnight noon teatime
經常使用選項:
-q QUEUE at做業隊列
-f /PATH/filename 從指定的文件中讀取制定的文件做業
-l 查看做業隊列中的帶運行做業列表,等同於atq命令
-c AT_JOB_NUM 獲取待做業任務的詳細內容
-d 刪除指定的命令做業,等同於atrm
batch:
由系統自行選擇在資源空閒時運行指定的任務
crontab:週期性執行任務計劃
守護進程:crond
週期性任務有兩類:
(1)系統cron任務:沒有默認運行用戶身份;因此須要額外指定運行着
/etc/crontab
vim命令
7個字段
前5個字段:時間字段
username:以哪一個用戶身份運行
command:運行那個命令
(2)用戶cron任務:由某個用戶提交,默認就以提交者的身份運行
/var/spool/cron/USERNAME
vim命令:
7個字段
前5個字段:時間字段
username:以哪一個用戶身份運行
command:運行那個命令
5個時間點:
第一個字段分鐘:值域0-59
第二個字段小時:值域0-23
第三個字段日:值域1-31
第四個字段月:值域1-12
第五個字段周:值域0-7
注意:幾月幾日與周幾,不建議同時使用
時間表示法:
數字:表示特定時間點
*:對應時間點有效取值範圍內的每一個時間點
-:一個連續的時間範圍,例如3-7
,:一個離散的時間範圍,例如3,5,7
/:有效時間範圍內每一個多少時間,指定執行頻率
crontab命令
crontab [-u user] -l -r -e
-u user:不是運行本身的cron任務,僅管理員有權限
-l:列出cron任務
-r:刪除cron任務
-e:編輯cron任務
補充性工具:anacron檢查上一次沒有正常運行的cron自動執行
注意:若是不想接收命令運行結果的郵件
COMMAND > /dev/null
COMMADN &> /dev/null
對於crontab文件%有特殊意義須要用轉移符轉義
crontab的PATH變量於用戶環境變量不徹底相同,須要絕對路徑
練習:
一、每週一到週六凌晨3點20分,運行tar命令對/etc目錄進行備份,備份目錄爲/backup/etc-YYYY-MM-DD.tar.xz
二、每週日凌晨2點30分,運行cp命令對/etc/fstab命令進行備份,備份路徑爲/backup/fstab-YYYY-MM-DD-hh-mm-ss
三、天天晚上12點,取得/proc/meminfo文件中全部以s或m開頭的行,追加到/static/meminfo.txt中間以===============爲分隔符。
1. [root@localhost ~]# crontab -e 20 3 * * 1-6 tar -czvf /backup/etc-$(date '+%F').tar.gz /etc/ 2. [root@localhost ~]# crontab -e 30 2 * * */* cp /etc/fstab /backup/fstab-$(date '+%F-%H-%M-%S') 3. [root@localhost ~]# crontab -e 0 24 * * * echo "================================================">>/statistics/meminfo.txt && cat /proc/meminfo | grep -E '^S|^M' >> /statistics/meminfo.txt