1.linxu任務計劃:
任務計劃:
在未來時間點執行一次任務:at,batch
週期性執行任務:crontab
電子郵件服務:
smtp:simple mail transmission protocol
/var/spool/mail/USERNAME 個人郵件緩衝目錄
pop3:post office protocol
imap4:internet mail access protocol
MUA:mail命令
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變量於用戶環境變量不完全相同,需要絕對路徑
練習:
1、每週一到週六凌晨3點20分,運行tar命令對/etc目錄進行備份,備份目錄爲/backup/etc-YYYY-MM-DD.tar.xz
2、每週日凌晨2點30分,運行cp命令對/etc/fstab命令進行備份,備份路徑爲/backup/fstab-YYYY-MM-DD-hh-mm-ss
3、每天晚上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