#!/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