看一看使用 shell 脚本对 Linux 系统和进程资源进行监控
来自:IBMD链接:---S简介S语言对于接触LINUX的人来说都比较熟悉,它是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。际上S是一个命令解释器,它解释由用户输入的命令并且把它们送到内核。它没有一般编程语言的“编译-链接-运行”过程。不仅如此,S有自己的编程语言用于对命令的编辑,它允许用户编写由命令组成的程序。S编程语言具有普通编程语言的很多特点,比如它也有循环结构和分支控制结构等,用这种编程语言编写的S程序与其他应用程序具有同样的效果。当然,S功能也是很强大的。S有多种类型,其中比较常用的几种是B()、C()和K()。种各有缺点,L操作系统缺省的一般是BA,它是B的扩展,简称B,的命令语法是B命令语法的超集,并且在B的基础上增加、增强了很多特性。在这里,我们以B做为例总结了使用S对系统和进程资源进行监控的一些内容,希望对您能有帮助。使用S对进程资源进行监控检查进程是否存在在对进程进行监控时,我们一般需要得到该进程的ID,进程ID是进程的仅有标识,但是有时可能在服务器上不同用户下运行着多个相同进程的进程,下面的函数GPID给出了获取指定用户下指定进程的进程ID功能(目前只考虑这个用户下启动一个此进程的进程),它有两个参数为用户和进程,它首先使用查找进程信息,同时通过过滤出需要的进程,比较后通过和查找需要进程的ID值(此函数可根据际情况修改,比如需要过滤其它信息等)。清单1对进程进行监控GPID#U#N{PU=$1PN=$2=`-$PU|$PN|-|-|-养老院的相关资讯可以到我们网站了解一下,从专业角度出发为您解答相关问题,给您优质的服务!https://chunzuo.com/s_a.htmlhttp://img.chunzuo.com/images/JnfbCJeYwGcnDKb5R3XaPowbt37B5Tk1PIeJVlGj.jpeg
|-|-|-|-1|'{$1}'`$}示例演示:1)源程序(例如查找用户为,进程为CFTA的进程ID)PID=`GPIDCFTA`$PID2)结果输出11426[@]$3)结果分析从上面的输出可见:11426为用户下的CFTA程序的进程ID。4)命令介绍1:查看系统中瞬间进程信息。参数:-用户识别码列出属于该用户的程序的状况,也可使用用户称来指定。-进程识别码指定进程识别码,并列出该进程的状况。-指定输出格式2:用于查找文件中符合字符串的当前行。参数:-反向选择,亦即显示出没有'搜寻字符串'内容的那一行。3:一个非交互性文本编辑器,它编辑文件或标准输入导出的文件,一次只能处理一行内容。参数:-读取下一个输入行,用下一个命令处理新的行而不是用首个命令。标志打印匹配行4:一种编程语言,用于在下对文本和数据进行处理。数据可以来自标准输入、一个或多个文件,或其它命令的输出。它支持用户自定义函数和动态正则表达式等先进功能,是下的一个强大编程工具。它在命令行中使用,但更多是作为脚本来使用。的处理文本和数据的方式:它逐行扫描文件,从首行到比较后一行,寻找匹配的特定模式的行,并在这些行上进行你想要的操作。如果没有指定处理动作,则把匹配的行显示到标准输出(屏幕),如果没有指定模式,则所有被操作所指定的行都被处理。参数:-F---:指定输入文件折分隔符,是一个字符串或者是一个正则表达式,如-F:。有时有可能进程没有启动,下面的功能是检查进程ID是否存在,如果此进程没有运行输出:T#检查进程是否存在[-$PID==-]{T}检测进程CPU利用率在对应用服务进行维护时,我们经常遇到由于CPU过高导致业务阻塞,造成业务中断的情况。CPU过高可能由于业务量过负荷或者出现死循环等异常情况,通过脚本对业务进程CPU进行时时监控,可以在CPU利用率异常时及时通知维护人员,便于维护人员及时分析,定位,以及避免业务中断等。下面的函数可获得指定进程ID的进程CPU利用率。它有一个参数为进程ID,它首先使用查找进程信息,同时通过-过滤掉%CPU行,比较后通过查找CPU利用百分比的整数部分(如果系统中有多个CPU,CPU利用率可以超过100%)。清单2对业务进程CPU进行时监控GC{CV=`-$1-|-CPU|'{$1}'|-F'{$1}'`$CV}下面的功能是通过上面的函数GC获得此进程的CPU利用率,然后通过条件语句判断CPU利用率是否超过限制,如果超过80%(可以根据际情况进行调整),则输出告警,否则输出正常信息。清单3判断CPU利用率是否超过限制CC{PID=$1=`GC$PID`[$-80]{“T80%”}{“T”}}示例演示:1)源程序(假设上面已经查询出CFTA的进程ID为11426)CC114262)结果输出T75T[@]$3)结果分析从上面的输出可见:CFTA程序当前的CPU使用为75%,是正常的,没有超过80%的告警限制。检测进程内存使用量在对应用服务进行维护时,也经常遇到由于内存使用过大导致进程崩溃,造成业务中断的情况(例如32位程序可寻址的比较大内存空间为4G,如果超出将申请内存失败,同时物理内存也是有限的)。内存使用过高可能由于内存露,消息堆积等情况,通过脚本对业务进程内存使用量进行时时监控,可以在内存使用量异常时及时发送告警(例如通过短信),便于维护人员及时处理。下面的函数可获得指定进程ID的进程内存使用情况。它有一个参数为进程ID,它首先使用查找进程信息,同时通过-过滤掉VSZ行,然后通过除1000取以兆为单位的内存使用量。清单4对业务进程内存使用量进行监控GM{MEMU=`--$1|-VSZ`((MEMU=1000))$MEMU}下面的功能是通过上面的函数GM获得此进程的内存使用,然后通过条件语句判断内存使用是否超过限制,如果超过16G(可以根据际情况进行调整),则输出告警,否则输出正常信息。清单5判断内存使用是否超过限制=`GM$PID`[$-1600]{“T16G”}{“T”}示例演示:1)源程序(假设上面已经查询出CFTA的进程ID为11426)=`GM11426`T$M[$-1600]{T16G}{T}2)结果输出T248MT[@]$3)结果分析从上面的输出可见:CFTA程序当前的内存使用为248M,是正常的,没有超过16G的告警限制。检测进程句柄使用量在对应用服务进行维护时,也经常遇到由于句柄使用过量导致业务中断的情况。每个平台对进程的句柄使用都是有限的,例如在L平台,我们可以使用–命令((-)1024)或者对的内容进行查看,得到进程句柄限制。句柄使用过高可能由于负载过高,句柄露等情况,通过脚本对业务进程句柄使用量进行时时监控,可以在异常时及时发送告警(例如通过短信),便于维护人员及时处理。下面的函数可获得指定进程ID的进程句柄使用情况。它有一个参数为进程ID,它首先使用输出进程句柄信息,然后通过-统计输出句柄个数。GD{DES=`$1|-`$DES}下面功能是通过上面的函数GD获得此进程的句柄使用量,然后通过条件语句判断句柄使用是否超过限制,如果超过900(可以根据际情况进行调整)个,则输出告警,否则输出正常信息。=`GD$PID`[$-900]{“T900”}{“T”}示例演示:1)源程序(假设上面查询出CFTA的进程ID为11426)=`GD11426`T$[$-900]{T900}{T}2)结果输出T528T[@]$3)结果分析从上面的输出可见:CFTA程序当前的句柄使用为528个,是正常的,没有超过900个的告警限制。4)命令介绍:统计指定文件中的字节数、字数、行数,并将统计结果显示输出。参数:-统计行数。-统计字节数。-统计字数。使用S对系统资源进行监控查看某个TCP或UDP端口是否在监听端口检测是系统资源检测经常遇到的,特别是在络通讯情况下,端口状态的检测往往是很重要的。有时可能进程,CPU,内存等处于正常状态,但是端口处于异常状态,业务也是没有正常运行。下面函数可判断指定端口是否在监听。它有一个参数为待检测端口,它首先使用输出端口占用信息,然后通过,,过滤输出监听TCP端口的个数,第二条语句为输出UDP端口的监听个数,如果TCP与UDP端口监听都为0,返回0,否则返回1清单6端口检测L{TCPL=`-|:$1|
'$1==$NF==LISTEN{$0}'|-`UDPL=`-|:$1
|'$1==$NF==0000:*{$0}'|-`((L=TCPL+UDPL))[$L==0]{0}{1}}示例演示:1)源程序(例如查询8080端口的状态是否在监听)L=`L8080`[$L-1]{T}{T}2)结果输出T[@]$3)结果分析从上面的输出可见:这个L服务器的8080端口处在监听状态。4)命令介绍:用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的络连接情况。参数:-显示所有连线中的S。-直接使用IP地址,而不通过域服务器。下面的功能也是检测某个TCP或者UDP端口是否处在正常状态。:-|$1|'$6==LISTEN$1=={$0}':-|$1|'$1==$5==0000:*{$0}'命令介绍:在文件内查找指定的字符串。执行效果如-E,使用的语法及参数可参照指令,与不同点在于解读字符串的方法,是用扩展的正则表达式语法来解读,而则用基本的正则表达式语法,扩展的正则表达式比基本的正则表达式有更完整的表达规范。查看某个进程正在运行的个数有时我们可能需要得到服务器上某个进程的启动个数,下面的功能是检测某个进程正在运行的个数,例如进程为CFTA。R=`-|-|-|[]CFTA|-|-检测系统CPU负载在对服务器进行维护时,有时也遇到由于系统CPU(利用率)负载过量导致业务中断的情况。服务器上可能运行多个进程,查看单个进程的CPU都是正常的,但是整个系统的CPU负载可能是异常的。通过脚本对系统CPU负载进行时时监控,可以在异常时及时发送告警,便于维护人员及时处理,预防事故发生。下面的函数可以检测系统CPU使用情况使用取5次系统CPU的值,取平均值,然后通过与100取差得到当前CPU的际占用值。GSCPU{CI=`15|-'3,$'
|'{=+$15}END{5}'|-F'{$1}'CN=`100-$CI|`$CN}示例演示:1)源程序=`GSCPU`TCPU$[$-90]{T90%}{T}2)结果输出TCPU87T[@]$3)结果分析从上面的输出可见:当前L服务器系统CPU利用率为87%,是正常的,没有超过90%的告警限制。4)命令介绍:VMS(虚拟内存统计)的缩写,可对操作系统的虚拟内存、进程、CPU活动进行监视。参数:-表示在周期性循环输出时,输出的头部信息仅显示一次。检测系统磁盘空间系统磁盘空间检测是系统资源检测的重要部分,在系统维护维护中,我们经常需要查看服务器磁盘空间使用情况。因为有些业务要时时写话单,日志,或者临时文件等,如果磁盘空间用尽,也可能会导致业务中断,下面的函数可以检测当前系统磁盘空间中某个目录的磁盘空间使用情况输入参数为需要检测的目录,使用输出系统磁盘空间使用信息,然后通过和过滤得到某个目录的磁盘空间使用百分比。GDS{[$#-1]1F=$1$DS=`-|$F|'{$5}'|-F%'{$1}'$DS}示例演示:1)源程序(检测目录为)F=DS=`GDS$F`T$F$DS%[$DS-90]{T($F)90%}{T($F)}2)结果输出T14%T()[@]$3)结果分析从上面的输出可见:当前此L服务器系统上目录的磁盘空间已经使用了14%,是正常的,没有超过使用90%的告警限制。4)命令介绍:检查文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。参数:-以字节为单位显示。总结在L平台下,脚本监控是一个非常简单,方便,有效的对服务器,进程进行监控的方法,对系统开发以及进程维护人员非常有帮助。它不仅可以对上面的信息进行监控,发送告警,同时也可以监控进程的日志等等的信息,希望本文对大家有帮助。
页:
[1]