作为系统运维人员,就要实时的监控系统的一些重要参数,不如僵尸进程,CPU的利用率,内存的使用情况,磁盘空间的使用情况,系统的均衡负载,根据得到的最新信息,我们就能判断系统运行的状态是否良好。本人接触Linux系统也有一点时间,在网上看看了,经过整理,将一些常用的系统监控的命令shell脚本拿出来晒晒,希望给新手提供学习的机会,同时也希望经验丰富者提够些技术知道,多多探讨交流!
获得某个用户的某个进行的信息:
functionGetPID#user#name
{
PsUser=$1
#echo$PsUser
PsName=$2
#echo$PsName
pid=`ps-u$PsUser|grep$PsName|grep-vgrep|grep-vvi|grep-vdbx\n|grep-vtail|grep-vstart|grep-vstop|sed-n1p|awk'{print$1}'`
echo$pid
}
PID=`GetPIDlgycat`
echo$PID
#Theprocessdoesnotexist.
if["-$PID"=="-"]
then
{
echo"Theprocessdoesnotexist."
}
fi
这里面涉及一些最基本的进程监控命令,在linux中你只要man ps就会得到很多使用说明,grep按照一定的匹配规则进行字符串分割匹配,还有一些简单的控制语句,这些基本的shell语法应该是我们的基本技能,在晚上会有很多的学习资料。
获得CPU的使用率:
functionGetCPU
{
CPUValue=`ps-p$1-opcpu|grep-vCPU|awk'{print$1}'|awk-F.'{print$1}'`
echo$CPUValue
}
functionCheckCPU
{
PID=$1
cpu=`GetCPU$PID`
if[$cpu-gt80]
then
{
echo"Theusageofcpuislargerthan80%"
}
else
{
echo"Theusageofcpuisnormal"
}
fi
}
CheckCPU$PID
这个程序和上一个代码片段是一脉相承,本段代码的运行结果一会会有相应的展示!
这段脚本的主要目的是用来进行对某个进程的内存使用情况的检测:
functionGetMem
{
MemUsage=`ps-ovsz-p$1|grep-vVSZ`
((MemUsage/=1024))
echo$MemUsage
}
mem=`GetMem$PID`
if[$mem-gt1600]
then
{
echo"Theusageofmemoryislargerthan1.6G"
}
else
{
echo"Theusageofmemoryisnormal"
}
fi
这是用来进行获得此进程的句柄使用量:
functionGetDes
{
DES=`ls/proc/$1/fd|wc-l`
echo$DES
}
des=`GetDes$PID`
if[$des-gt900]
then
{
echo"Thenumberofdesislargerthan900"
}
else
{
echo"Thenumberofdesisnormal"
}
fi
进行对某个端口的绑定的查询:
functionListening
{
TCPListeningNum=`netstat-an|grep":$1"|awk'$1=="tcp"&&$NF=="LISTEN"{print$0}'|wc-l`
UDPListenNum=`netstat-an|grep":$1"|awk'$1=="udp"&&$NF=="0.0.0.0:*"{print$0}'|wc-l`
((ListeningNum=TCPListeningNum+UDPListenNum))
if[$ListeningNum==0]
then
{
echo"0"
}
else
{
echo"1"
}
fi
}
isListen=`Listening8080`
if[$isListen-eq1]
then
{
echo"Theportislistening"
}
else
{
echo"Theportisnotlistening"
}
fi
系统CPU的使用情况:
functionGetSysCPU
{
CPUIdle=`vmstat15|sed-n'3,$p'|awk'{xx=x+$15}END{printx/5}'|awk-F.'{print$1}'`
CPUNum=`echo"100-$CPUIdle"|bc`
echo$CPUNum
}
cpu=`GetSysCPU`
echo"TheSystemCPUis$cpu"
if[$cpu-gt90]
then
{
echo"Theusageofsystemcpuislargerthan90%"
}
else
{
echo"Theusageofsystemcpuisnormal"
}
fi
获得某制定的磁盘空间:
functionGetDiskSpc
{
if[$#-ne1]
then
return1
fi
Folder="$1$"
DiskSpace=`df-k|grep$Folder|awk'{print$5}'|awk-F%'{print$1}'`
echo$DiskSpace
}
Folder="/dev"
DiskSpace=`GetDiskSpc$Folder`
echo"Thesystem$Folderdiskspaceis$DiskSpace%"
if[$DiskSpace-gt90]
then
{
echo"Theusageofsystemdisk($Folder)islargerthan90%"
}
else
{
echo"Theusageofsystemdisk($Folder)isnormal"
}
fi
在本机上代码检测的结果如下:
lgy@lgy-HP:~$./monitorCPU.sh
2388
Theusageofcpuisnormal
Theusageofmemoryisnormal
Thenumberofdesisnormal
Theportisnotlistening
TheSystemCPUis1
Theusageofsystemcpuisnormal
Thesystem/devdiskspaceis1%
Theusageofsystemdisk(/dev)isnormal