登陆

共享有用监控脚本:运用Shell查看进程是否存在

admin 2019-11-12 185人围观 ,发现0个评论

在运维工作中,为确保事务的正常运转,咱们需求守时查看指定的进程是否还存在,一旦进程退出了,阐明服务或许存在问题,运维工程师就可以在第一时间处理问题。今日就跟咱们共共享有用监控脚本:运用Shell查看进程是否存在享一个有用的shell脚本——时间查看你的进程情况。

在对进程共享有用监控脚本:运用Shell查看进程是否存在进行监控时,咱们一般需求得到该进程的 ID,进程 ID 是进程的仅有标识,可是有时或许在服务器上不同用户下运转着多个相同进程名的进程。

下面的函数 GetPID 给出了获取指定用户下指定进程名的进程 ID 功用(现在只考虑这个用户下发动一个此进程名的进程),它有两个参数为用户名和进程名,它首要运用 ps 查找进程信息,一起经过 grep 过滤出需求的进程,最终经过 sed 和 awk 查找需求进程的 ID 值(此函数可根据实际情况修正,比方需求过滤其它信息等)。

对进程进行监控

function GetPID #User #Name

共享有用监控脚本:运用Shell查看进程是否存在

{

PsUser=$1

PsName=$2

pid=`ps -u $PsUser|grep $PsName|grep -v grep|grep -v vi|grep -v dbxn

|grep -v tail|grep -v start|grep -v stop |sed -n 1p |awk '{print $1}'`

echo $pid

}

<、pre>

示例演示:

1. 源程序(例如查找用户为 root,进程名为 TestApp 的进程 ID)

PID=`GetPID root TestApp`

echo $PID

2. 成果输出

共享有用监控脚本:运用Shell查看进程是否存在

11426

[dyu@xilinuxbldsrv shell]$

3. 成果剖析

从上面的输出可见:11426 为 root 用户下的 TestApp 程序的进程 ID。

4. 指令详解

共享有用监控脚本:运用Shell查看进程是否存在

(1)ps: 查看体系中瞬间进程信息。参数:

-u< 用户识别码 > 列出归于该用户的程序的情况,百度云下载也可运用用户称号来指定

-p< 进程识别码 > 指定进程识别码,并列出该进程的情况

-o 指定输出格局

(2)grep: 用于查找文件中契合字符串的当前行。参数:

-v 反向挑选,亦即显示出没有 ‘搜索字符串’ 内容的那一行

(3)sed: 一个非交互性文本修改器,它修改文件或规范输入导出的文件,一次只能处理一行内容。参数:

-n 读取下一个输入行,用下一个指令处理新的行而不是用第一个指令

p 标志 打印匹配行

(4)awk:一种编程言语,用于在 linux/unix 下对文本和数据进行处理。除了在指令行中运用,它更多是作为脚本来运用。参数:

-F fs or –field-separator fs :指定输入文件折分隔符,fs 是一个字符串或者是一个正则表达式,如 -F:。

PS:有时有或许进程没有发动,下面的功用是查看进程 ID 是否存在,假如此进程没有运转输出:

The process does not exist.

# 查看进程是否存在

if [ "-$PID" == "-" ]

then

{

echo "The process does not exist."

}

fi

请关注微信公众号
微信二维码
不容错过
Powered By Z-BlogPHP