前置知識:awkhtml
參考學習博客:http://www.javashuo.com/article/p-yrxnaais-bq.htmlshell
awk 'BEGIN{ commands } pattern{ commands } END{ commands }'
第一步:運行BEGIN{ commands }語句塊中的語句。學習
第二步:從文件或標準輸入(stdin)讀取一行。而後運行pattern{ commands }語句塊,它逐行掃描文件,從第一行到最後一行反覆這個過程。直到文件全部被讀取完成。spa
第三步:當讀至輸入流末尾時。運行END{ commands }語句塊。code
BEGIN語句塊在awk開始從輸入流中讀取行以前被運行,這是一個可選的語句塊,比方變量初始化、打印輸出表格的表頭等語句一般可以寫在BEGIN語句塊中。htm
END語句塊在awk從輸入流中讀取全然部的行以後即被運行。比方打印所有行的分析結果這類信息彙總都是在END語句塊中完畢,它也是一個可選語句塊。blog
pattern語句塊中的通用命令是最重要的部分,它也是可選的。假設沒有提供pattern語句塊,則默認運行{ print },即打印每一個讀取到的行。awk讀取的每一行都會運行該語句塊。內存
這三個部分缺乏任何一部分均可以。開發
awk 簡單實用小案例:get
ls -lh | awk '{print $1}'
在這裏awk 後面沒有BEGIN和END,跟着的是pattern,也就是每一行都會通過這個命令,在awk中$n,表示第幾列,在這裏表示打印每一行的第一列。
腳本要求:
開發shell 腳本判斷系統神域內存大小,若是低於100 M 就郵件報警給管理員,而且加入系統定時任務 每3 分鐘執行一次檢查
#!/bin/sh free=$(free -m | awk 'NR==2{print $4}') # 判斷當前內存是否小於 100 if [ $free -lt 100 ];then echo " 當前內存不足,可用內存大小爲:$free(M)" else echo "$free .當前內存充足" fi
而後在配置上定時任務 和發送郵件就完成了
第二步:配置郵件
echo set from=adm1nistrator@163.com smtp=smtp.163.com smtp-auth-user=572891887 smtp-auth-password=darker520. smtp-auth=login
>/etc/mail.rc
第三步: 定時任務 tail -2 /var/spool/cron/root