shell腳本案例(四)利用 free 命令精確監控RAM的使用率
阿新 • • 發佈:2018-05-18
mem Linux shell shell 腳本 linux 運維 arppinging
需求:利用free命令精確監控RAM的使用率
具備知識:grep,free,awk,bc
腳本如下
[root@arppining scripts]# cat mem.sh #!/bin/bash - # free -m 代表著以M單位進行輸出,如果內存足夠大,那麽您應該使用-g參數,容量以GB為單位輸出。 mem_total=`free -m | grep Mem | awk ‘{print $2}‘` mem_used=`free -m | grep Mem | awk ‘{print $3}‘` mem_free=`free -m | grep Mem | awk ‘{print $4}‘` # 首先bash shell默認是不支持小數點計算的,所以這裏我采取的是使用awk計算,當然,也可以使用bc進行計算。 # 我篩選出了總容量和使用中的容量,去計算目前RAM的使用率是多少。 sum_used=`free -m | grep Mem | awk ‘{print ($3/$2)*100}‘` # 進行輸出,這裏我在每個數值後面添加了M顯示,使輸出結果更加易懂。變量和需要在變量後面添加的字符,應該用{}號隔開,比如 ${a}M,表示在輸出變量a的後面加上M。 echo "mem_total: ${mem_total}M" echo "mem_used: ${mem_used}M" echo "men_free: ${mem_free}M" echo "sum_used: $sum_used%" # 同樣,bash shell中是不支持小數點的比較的,這裏我采用了bc對數值進行比較,如果結果為true,返回值為1,false返回值為0。 # 比如 echo "1.1>1.2"|bc 那麽輸出就是0,如果為echo "1.1>1"|bc 那麽輸出結果為1. warning=`echo "$sum_used>90"|bc` # 利用比較返回的值作為是否發送郵件的條件,如果不為1,及使用率大於90,那麽發送郵件。 if [ $warning -ne 1 ];then echo "warning : MEM use ${sum_sed}%" | mail -s "MEM status warning." [email protected] fi [root@arppining scripts]# 最後可以加入定時任務中執行。
腳本運行
[root@arppining scripts]# bash mem.sh
mem_total: 1006M
mem_used: 986M
men_free: 19M
sum_used: 98.0119%
[root@arppining scripts]#
至此,結束。
shell腳本案例(四)利用 free 命令精確監控RAM的使用率