一、總結Linux系統上的任務計劃(at、crontab)的詳細使用方法;
Linux上的任務計劃:
任務計劃分為:
在未來時間點一次性執行某任務,實作目标指令:at batch
在未來時間内周期性執行某任務,crontab
電子郵件服務:
協定:SMTP:簡單郵件傳輸協定
/var/spool/mail/USERNAME
登入使用者的預設郵件目錄
POP3:郵局協定
imap4:網際網路通路協定
mail指令的使用:
centos7下為mailx;
發送郵件例:
#mail root@localhost \\-s 可代替郵件主題subject,直接回車輸入
正文;
Subject:Hi 主題
How are you 正文
How old you 正文
Ctrl+D 郵件發送
發送給localhost 本地主機;
#mail 檢視郵件資訊
& number 檢視某封郵件
輸入重定向發送郵件:
mail -s "fstab" root@localhost < /etc/fstab \\輸入重定向<;
cat /etc/fstab | mail -s 'fstab.new' root @localhost
MUA:mail指令的簡單使用
mail指令:
mail:進入互動式收發郵件接口;
使用mail -s 指明subject
mail -s
at指令的使用:
一次性執行某任務;
Ctrl+d 送出作業
承載未來時間點運作的某作業:
支援使用作業隊列:
預設為a隊列;
at [option]... TIME
TIME:
(1)絕對時間 HH:MM;tomorrow;
(2)相對時間 now+時間機關 minute hour;
(3)模糊時間 midnight noon teatime
at -l
at now+3minute
常用選項:
-q: at作業隊列;實作相關隊列的管理;
-f: 讀取檔案中的作業指令;可編輯一個檔案後使用檔案名進行讀取
作業,例:at -f at.list 15:15-->讀取at.list檔案中的指令在15:15分
進行作業執行;
-l: 檢視作業隊列待運作的作業清單=atq指令
-c: 檢視待運作作業的内容;
-d: 删除指定作業;相當于atrm
batch:相似與at,但是不需要指定時間,時間由系統自行選擇在資源較
為空閑時,運作指定的任務。
crontab:周期性任務計劃;
守護程序:crond,在背景出于運作狀态,進行監控。
crontab -e 編輯任務,打開目前shell回話的預設編輯器來編輯cron任
務表;
crontab -l 檢視任務 list
-u user:不是管理自己的cron任務,而是指定的目标使用者,隻
有管理者可操作,不指定使用者就代表管理自己的任務。
-r 移除所有任務
周期性任務有兩類:
1.系統cron任務:沒有預設運作使用者身份,需要額外指定運作者;
在/etc/crontab vim打開進行編輯操作;
七個字段組成: 前5個字段來定義時間點
user-name:以哪個使用者的身份運作任務:
command to be executed:要運作的任務
2.使用者cron任務:由某個使用者所送出,預設以送出者的身份運作,
無需額外指定運作者;
在/var/spool/cron/USERNAME vim指令打開編輯;
注: 普通使用者不建議擁有此權限檢視這個檔案;
建議用crontab指令讓使用者管理此檔案;
前五個為時間點,最後一個為運作任務本身
5個時間點:
分鐘:有效範圍為0-59minute
小時:0-23:
日 :1-31,不是每個月都有31号的。
月 :1-12,
周幾:0-7,0和7都表示周日;
注意:幾月幾号與周幾,不建議同時使用;
例:6 * * * * 表示:每月每天每小時的第六分鐘
時間點表示法:
*:對應時間點有效取值範圍内的每個時間點
用數字表示既定時間點;
-:一個特定的連續時間範圍,3-7=3到7分鐘
,: 一個離散的時間點,3,5,7=第三和第五和第七分鐘;
/#:表示有效時間範圍内每多少時間;用于指定頻率;
1-30/4=每一個小時的1-30分鐘每4分鐘運作一次;*/4=每4小時運作一次
,*表示小時的話;
5 */3 * * * /bin/echo "howdy" 每三個小時運作echo查
看howdy;要給既定的分鐘才可實作,不然意義不同為三小時以後而不是
每三小時;
思考:
如果想實作每8分鐘運作一次某任務
如果想實作每10秒鐘運作一次某任務
了解sleep指令;
cron補充性的工具:anacron
在cron一段時間内沒有運作規定時間點執行任務的時候,立即執行此任務
一次。
(1)如何禁止crontab運作發送郵件給管理者;
COMMAND > /dev/null
COMMAND &> /dev/null
(2)對于crontab檔案來講:%有特殊功能,如果指令中出現%。要記得轉
義,或者用單引号對其引用。
(3)crontab的PATH變量與使用者的變量不完全相同,是以,建議在cron中
的任務要使用絕對路徑。
題目:
1、每周一到周六的淩晨3點20分,運作cp指令對/etc/目錄進行歸檔另存,存儲位置為/backups/etc-YYYY-MM-DD
[root@localhost ~]#mkdir /backups/
[root@localhost ~]#contab -e
20 3 * * */1-6 /bin/cp /etc/ /backup/etc-$( date +\%Y-\%m-\%d )
2、每周日淩晨2點30分,運作cp指令對/etc/fstab檔案進行備份,存儲位置為/backup/fstab-YYYY-MM-DD-hh-mm-ss;
[root@localhost ~]#mkdir /backup/fstab
[root@localhost ~]#crontab -e
30 2 * * */0 /bin/cp /etc/fstab /backup/fstab-$( date +\%Y-\%m-\%d-\%H-\%M-\%S )
[root@localhost ~]#mkdir /statistics/meminfo.txt
[root@localhost ~]#crontab -e
0 0 * * * /bin/echo "=================" >> statistics/meminfo.txt && /usr/bin/egrep '^(S|M)' /proc/meminfo >> statistics/meminfo.txt