1. 程式人生 > >shell腳本案例(四)利用 free 命令精確監控RAM的使用率

shell腳本案例(四)利用 free 命令精確監控RAM的使用率

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的使用率