作为系统运维人员,就要实时的监控系统的一些重要参数,不如僵尸进程,CPU的利用率,内存的使用情况,磁盘空间的使用情况,系统的均衡负载,根据得到的最新信息,我们就能判断系统运行的状态是否良好。本人接触Linux系统也有一点时间,在网上看看了,经过整理,将一些常用的系统监控的命令shell脚本拿出来晒晒,希望给新手提供学习的机会,同时也希望经验丰富者提够些技术知道,多多探讨交流!
获得某个用户的某个进行的信息:
functionGetPID#user#name{PsUser=$1#echo$PsUserPsName=$2#echo$PsNamepid=`ps-u$PsUser|grep$PsName|grep-vgrep|grep-vvi|grep-vdbxn|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=$1cpu=`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]thenreturn1fiFolder="$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.sh2388TheusageofcpuisnormalTheusageofmemoryisnormalThenumberofdesisnormalTheportisnotlisteningTheSystemCPUis1TheusageofsystemcpuisnormalThesystem/devdiskspaceis1%Theusageofsystemdisk(/dev)isnormal