Linux系统监控脚本常用函数模块

#!/bin/bash

#********* 检查进程是否存在 ************

like : pid=GetPID #User #Name

return: pid

#**************************************************

function GetPID #User #Name
{
PsUser=$1
PsName=$2
pid=ps -u $PsUser | grep $PsName | sed -n 1p | awk '{print $1}'
echo $pid
}

#----------------------------------------------------------------------------------------
#----------------------------------------------------------------------------------------

#*********** 检测进程CPU利用率 ***************************

ps -p 进程号 -o pcpu(CPU利用率) : 输出进程的CPU利用率

如果有多个CPU,占用率可以超过100%

like : GetCPU PID

return: %

#******************************************************************

function GetCPU
{
CpuValue=ps -p $1 pcpu | grep -v CPU | awk '{print $1} | awk -F . '{print $1}''
echo ${CpuValue}’%’
}

#************ 判断CPU利用率是否超过限制 ************

values: PID

return: y/n

#*************************************************

function CheckCpu
{
PID=$1
cpu=GetCpu $PID
if [ $cpu -gt 80 ];then
echo “The usage og cpu is larger than 80%”
else
echo “The usage of cpu is normal”
fi
}

#----------------------------------------------------------------------------------------
#----------------------------------------------------------------------------------------

#************ 检测进程内存使用量 ******************

values: PID vsz : 显示进程内存使用量 K

return: cpu_usage 单位:M

#********************************************************

function GetMem
{
MEMUsage=ps -p $1 -o vsz | grep -v VSZ
((MEMUsage /= 1024))
echo $MEMUsaeg
}

#判断内存是否超出限制 eg: 1.6G

mem=GetMem $PID
if [ $mem -gt 16000];then
echo “the usage of memory is larger than 1.6G”
else
echo “the usage og memory is normal”
fi

#---------------------------------------------------------------------------------------
#---------------------------------------------------------------------------------------

#************* 检查进程句柄使用量 *****************

避免句柄使用过量导致业务中断的情况 ulimit -n 显示进程句柄限制(1024)

values: PID

return: 句柄数 /proc/pid/fd : 存放句柄数

#****************************************************************

function GetDes
{
DES=ls /proc/$1/fd | wc -l
echo $DES
}

des=GetDes $PID
if [ $des -gt 900 ];then
echo “the number of des is larger than 900”
else
echo “the number of des is normal”
fi

#---------------------------------------------------------------------------------------
#---------------------------------------------------------------------------------------

#************ 查看某个TCP或UDP端口是否在监听 *****************

values: PID

return: 0 (TCP/UDP 监听都为无); else: 1(TCP/UDP监听)

#******************************************************************

function Listening
{
Num_TCPListening=netstat -an | grep ":$1" | \n awk '$1 == "tcp" && $NF == "LISTEN" {print $0}' | wc -l
Num_UDPListening=netstat -an | grep ":$1" | \n awk '$1 == "udp" && $NF == "0.0.0.0:*"{print $0} | wc -l'
((Num_Listening = Num_TCPListening + Num_UDPListening))
if [ $Num_Listening == 0 ];then
echo “0”
else
echo “1”
fi
}

#---------------------------------------------------------------------------------------
#---------------------------------------------------------------------------------------

#************ 查找某个进程名正在运行的个数 ******************

ps -ef (-e: 显示所有进程;-f: 显示进程全格式)

values: name(进程名)

return: number

#*****************************************************************

Runnum=ps -ef | grep "\[$name\]" | wc -l

#---------------------------------------------------------------------------------------
#---------------------------------------------------------------------------------------

#****************** 检测系统CPU负载 ****************

vmstat 取5次系统CPU的idle值,求其平均值

sed -n '3, p ′ 每 次 输 出 第 三 行 ( p' 每次输出第三行( p(p为最后一行)

#****************************************************************

function GetsysCPU
{
CpusIdle=vmstat 1 5 | sed -n '3,$p' \n | awk 'BEGIN{x=0}{x=x+$15}END{print x/5} | awk -F . '{print $1}''
CpuNum=echo "100-$CpuIdle" | bc
echo $CpuNum
}

cpu=GetsysCPU
echo “the system CPU is $cpu”
if [ $cpu -gt 90 ];then
echo “the usage of system cpu is larger than 90%”
else
echo “the usage of system cpu is normal”
fi

#---------------------------------------------------------------------------------------
#---------------------------------------------------------------------------------------

#****************** 检测系统磁盘空间 *************************

$1:要检测的目录名 (变量不等于1,返回1,退出)

#************************************************************************

function GetDiskSpc
{
if [ $# -ne 1 ];then
return 1
fi

Folder="$1$"
DiskSpace=`df -k | grep $Folder | awk '{print $5}' | awk -F% '{print $1}'`
echo $DiskSpace

}

#---------------------------------------------------------------------------------------
#---------------------------------------------------------------------------------------
Folder="/boot"

DiskSpace=GetDiskSpc $Folder

echo “The system $Folder disk space is $DiskSpace%”

if [ KaTeX parse error: Expected '}', got 'EOF' at end of input: …of system disk(Folder) is larger than 90%"
}
else
{
echo “The usage of system disk($Folder) is normal”
}
fi

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值