【Linux_Shell 腳本編程學習筆記4、監控系統內存並報警企業案例腳本】

    前置知識: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,表示第幾列,在這裏表示打印每一行的第一列。

  • $0 當前記錄(這個變量中存放着整個行的內容)
  • $1~$n 當前記錄的第n個字段,字段間由FS分隔
  • FS 輸入字段分隔符 默認是空格或Tab
  • NF 當前記錄中的字段個數,就是有多少列
  • NR 已經讀出的記錄數,就是行號,從1開始,若是有多個文件話,這個值也是不斷累加中。
  • FNR 當前記錄數,與NR不一樣的是,這個值會是各個文件本身的行號
  • RS 輸入的記錄分隔符, 默認爲換行符
  • OFS 輸出字段分隔符, 默認也是空格
  • ORS 輸出的記錄分隔符,默認爲換行符
  • FILENAME 當前輸入文件的名字

 

    腳本要求:

              開發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

相關文章
相關標籤/搜索