当前位置: 首页 > 科技观察

Linux实用监控脚本分享:使用 Shell 检查进程是否存在

时间:2023-03-12 23:51:51 科技观察

Linux实战监控脚本分享:使用Shell查看进程是否存在运维工程师可以第一时间处理问题。今天给大家分享一个实用的shell脚本——时刻查看你的进程状态。在监控进程时,我们一般需要获取进程的ID。进程ID是进程的唯一标识,但有时服务器上可能会有多个进程名相同的进程运行在不同的用户下。下面的函数GetPID给出了获取指定用户下指定进程名的进程ID的功能(目前只考虑在该用户下以该进程名启动进程),它有用户名和进程两个参数name,它首先使用ps查找进程信息,通过grep过滤出需要的进程,最后通过sed和awk找到需要的进程的ID值(这个功能可以根据实际情况修改,比如过滤其他信息等)。监控进程函数GetPID#User#Name{PsUser=$1PsName=$2pid=`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}示例演示:1.源程序(例如查找用户root的进程ID和进程名称TestApp)PID=`GetPIDrootTestApp`echo$PID2。结果输出11426[dyu@xilinuxbldsrvshell]$3。结果分析从上面的输出可以看出:11426是root用户下TestApp程序的进程ID。4、命令详解(1)ps:查看系统中的瞬时进程信息。参数:-u列出属于用户的程序的状态,也可以通过用户名指定-p指定进程ID,列出进程的状态-o指定输出format(2)grep:用于在文件中查找与字符串匹配的当前行。参数:-v反向选择,即显示没有'搜索字符串'内容的行(3)sed:非交互式文本编辑器,编辑文件或从标准输入导出的文件,只能处理一行一个时间内容。参数:-n读取下一个输入行,用下一个命令处理新的行,而不是用第一个命令的p标志打印匹配行(4)awk:一种用于linux/unix下文本处理和数据处理的编程语言.除了在命令行上使用,更多的是作为脚本来使用。参数:-Ffsor–field-separatorfs:指定输入文件分隔符,fs为字符串或正则表达式,如-F:。PS:有时进程可能没有启动,下面的函数是检查进程ID是否存在,如果进程不运行输出:Theprocessdoesnotexist。#Checktheprocessexistsif["-$PID"=="-"]then{echo"进程不存在。"}fi