天天看点

linux shell脚本监控内存,shell脚本监控内嵌linux系统业务、CPU、内存等

下面是编程之家 jb51.cc 通过网络收集整理的代码片段。

编程之家小编现在分享给大家,也给大家做个参考。

定制板卡中bash无法使用,使用标准sh完成对系统及业务监控

#! /bin/sh

#Process_Name="/guard /aps /sa /zyguard"

Process_Name="/mp /mcu"

#获取主机IP地址

ip=`ifconfig eth0 |grep "inet addr"| cut -f 2 -d ":"|cut -f 1 -d " "`

gstr="/guard"

space=" "

First_Process=""

#获取初始业务进程号

for i in $Process_Name

do

if [[ $i == $gstr ]]

then

Bf_Process=`ps |grep $i|grep -v grep|grep -v '/bin/bash'|awk '{print $1}'`

First_Process=$First_Process$i":"$Bf_Process$space

else

Bf_Process=`ps |grep $i|grep -v grep|awk '{print $1}'`

First_Process=$First_Process$i":"$Bf_Process$space

fi

done

while true

do

For_num=1

sleep 3

Second_Process=""

#第二次获取业务进程号

for i in $Process_Name

do

if [[ $i == $gstr ]]

then

Bs_Process=`ps |grep $i|grep -v grep|grep -v '/bin/bash'|awk '{print $1}'`

Second_Process=$Second_Process$i":"$Bs_Process$space

else

Bs_Process=`ps |grep $i|grep -v grep|awk '{print $1}'`

Second_Process=$Second_Process$i":"$Bs_Process$space

fi

done

echo "First_Process:"$First_Process

echo "Second_Process:"$Second_Process

#查看所有业务进程有无变化,有变化输出到日志文件

for j in $Process_Name

do

echo $j

One_f_Process=`echo $First_Process|awk -v t="${For_num}" '{print $t}'`

One_s_Process=`echo $Second_Process|awk -v t="${For_num}" '{print $t}'`

For_num=$((For_num+1))

echo "One_f_Process:"$One_f_Process

echo "One_s_Process:"$One_s_Process

if [[ "$One_f_Process" != "$One_s_Process" ]]

then

Time_Now=`date`

echo $Time_Now

echo $j

echo $One_s_Process

echo $One_f_Process

echo -e $Time_Now"\t"$j"\tCollapse\tThe new process:"$One_s_Process"\t\tThe old process:"$One_f_Process >> /usr/tmp/$ip'_collapse'.txt

fi

done

#获取业务进程号

First_Process=""

for i in $Process_Name

do

if [[ $i == $gstr ]]

then

Bf_Process=`ps |grep $i|grep -v grep|grep -v '/bin/bash'|awk '{print $1}'`

First_Process=$First_Process$i":"$Bf_Process$space

else

Bf_Process=`ps |grep $i|grep -v grep|awk '{print $1}'`

First_Process=$First_Process$i":"$Bf_Process$space

fi

done

#系统内存使用率监控

Memory_Use_Rate=`free | grep Mem | awk '{printf"%d",$3/$2*100}'`

if [ 80 -le $Memory_Use_Rate ]

then

Time_Now=`date`

echo -e $Time_Now"\tSystm Memory\tMemory_Use_Rate\tAt present the use value:"$Memory_Use_Rate"%\tThreshold:80%" >> /usr/tmp/$ip'_alarm'.txt

fi

#系统cpu剩余率监控

cpu_Residual_Rate=`mpstat|grep all|awk '{printf"%d",$11}'`

echo $cpu_Residual_Rate

if [ $cpu_Residual_Rate -le 20 ]

then

Time_Now=`date`

echo $Time_Now

echo -e $Time_Now"\tSystm cpu\tcpu_Residual_Rate(%idle)\tAt present the use value:"$cpu_Residual_Rate"%\tThreshold:20%" >> /usr/tmp/$ip'_alarm'.txt

fi

#业务内存使用率监控

System_Memory=`free | grep Mem | awk '{printf"%d",$2/1024}'`

for k in $Process_Name

do

if [[ $k == $gstr ]]

then

Process_Memory_Use=`ps |grep $k|grep -v grep|grep -v '/bin/bash'|awk '{print $3}'`

var_length=${#Process_Memory_Use}

var_Position=`expr $var_length - 1`

m=${Process_Memory_Use:$var_Position:1}

if [[ $m == "m" ]]

then

Pro_Mem_Use=${Process_Memory_Use:0:$var_Position}

else

Pro_Mem_Use=`expr $Process_Memory_Use / 1024`

fi

System_Memory_Threshold=`free | grep Mem | awk '{printf"%d",$2/1024*0.8}'`

if [[ $Pro_Mem_Use -ge $System_Memory_Threshold ]]

then

Time_Now=`date`

echo -e $Time_Now"\t"$k"\tProcess_Memory_Use\tAt present the use value:"$Pro_Mem_Use"Mb\tThreshold:"$System_Memory_Threshold"Mb" >> /usr/tmp/$ip'_alarm'.txt

fi

else

Process_Memory_Use=`ps |grep $k|grep -v grep|awk '{print $3}'`

var_length=${#Process_Memory_Use}

var_Position=`expr $var_length - 1`

m=${Process_Memory_Use:$var_Position:1}

if [[ $m == "m" ]]

then

Pro_Mem_Use=${Process_Memory_Use:0:$var_Position}

else

Pro_Mem_Use=`expr $Process_Memory_Use / 1024`

fi

System_Memory_Threshold=`free | grep Mem | awk '{printf"%d",$2/1024*0.8}'`

if [[ $Pro_Mem_Use -ge $System_Memory_Threshold ]]

then

Time_Now=`date`

echo -e $Time_Now"\t"$k"\tProcess_Memory_Use\tAt present the use value:"$Pro_Mem_Use"Mb\tThreshold:"$System_Memory_Threshold"Mb" >> /usr/tmp/$ip'_alarm'.txt

fi

fi

done

done

以上是编程之家(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

总结

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

小编个人微信号 jb51ccc

喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!