天天看點

linux腳本監控系統性能CPU、記憶體和java程序情況

對于運維人員需要定時檢視伺服器的系統情況,有時候針對某個java程序需要檢視該應用占用記憶體和CPU情況可以通過以下腳本實作:

#!/bin/bash
hostip=`ifconfig bond1 | grep inet | awk 'NR==1{print $2}'`
cpu_usage=$(echo "100-`top -n1 | awk 'NR==3{print $8}'`"|bc)
#cpu compute way is same
#CPU=`top -b -n1 | grep "Cpu(s)" | awk '{print $2 + $3 + $4}'`
mem_total=`free -h |awk '/Mem:/{print $2}'`
mem_used=`free -m |awk '/Mem:/{print $3+$6}'`
mem_free=`free -h |awk '/Mem:/{print $4}'`
mem_rate=$(echo "scale=2;$mem_used *100/ `free -m |awk '/Mem:/{print $2}'`"|bc)
disk_total=`df -h /opt | tail -n 1 | awk '{ print $2}'`
disk_used=`df -h /opt | tail -n 1 | awk '{ print $3}'`
disk_free=`df -h /opt | tail -n 1 | awk '{ print $4}'`
disk_rate=`df -h /opt | tail -n 1 | awk '{ print $5}'`


echo -e "\n----------------------------"
echo -e "***主機$(hostname)系統監控資料***"
echo "[$hostip]"
echo "$(date)"
echo -e "----------------------------"
echo -e "\n|=-> cpu使用率:$cpu_usage%"
echo -e "\n|=-> 記憶體使用率:$mem_rate%      總記憶體:$mem_total       已使用記憶體(包含buff/cache): $mem_used M    空閑記憶體:$mem_free"
echo -e "\n|=-> 磁盤使用率:$disk_rate       磁盤總空間:$disk_total            已使用磁盤空間: $disk_used           空閑磁盤空間:$disk_free"

pentaho_java=`top -b -n1 | grep java |grep pentaho | awk '{print $1 "   " $2 "   " $6 "       " $10}'`

echo -e "\n|=->Pentaho application memory usage-<=| "
echo "PID         User      Mem      usage%" 
echo "$pentaho_java"

echo -e '''

----------------------
Powered by: wjz
----------------------
'''
           

結果:

linux腳本監控系統性能CPU、記憶體和java程式情況

 其中上面的腳本是顯示系統情況,還有另一種腳本可以寫死循環,每隔幾秒統計一次系統情況:

#/bin/bash

while :
do
TIME=`date +"%F_%H:%M:%S"`
CPU=`top -b -n1 | grep "Cpu(s)" | awk '{print $2 + $3 + $4}'`
TOTAL=`cat /proc/meminfo | grep MemTotal | awk '{print $2}'`
CURRENT=`cat /proc/meminfo | grep Active: | awk '{print $2}'`
FREE=`cat /proc/meminfo | grep MemFree | awk '{print $2}'`
RAM=$(echo "scale=2; $CURRENT*100 / $TOTAL" | bc)
RAM_T=$(echo "scale=2; $FREE/$TOTAL*100" | bc)
echo $TIME "CPU:" $CPU    "RAM:" $RAM "%"   "  RAM_FREE_RATIO:" $RAM_T "%" >> check_system.txt
top -b -n1 | grep java |grep pentaho| awk -v arg1=$TIME '{print arg1, $0}' >> check_java.txt
sleep 3
done
           

參考文章:

https://www.cnblogs.com/cooper-73/p/10155624.html

繼續閱讀