今天公司LD让写个小脚本,监控一个进程是否存在,存在怎退出脚本,如果不存在就发一封邮件给指定邮箱,我是通过守护进程的运行状态来判断该服务的连接情况,并将测试结果显示到标准输出上。

为了方便监控,使用crontab使其每两小时执行一次。

代码:

#!/bin/bash
#
#提示用户输入一个指定守护进程名称,并将其赋予变量n_proc
#echo "Please input a name of process
#read n_proc
#
#搜索变量n_proc中指定的守护进程的进程号,并赋值给变量pidnu
pidnu=$( ps ax |grep -v "ps ax"|grep -v grep |grep $n_proc|awk '{print $1}')
#
echo "checking for \"$n_proc\",please wait..."
#
#判断变量pidnu是否为空,空则证明此进程不存在。
if [ -z "$pidnu" ]
    then
        echo "The status be stopped..."
        mail -s "title" *********@163.com < /root/shell/mail.txt
        exit
       else
           echo "The status be running..."
fi


设置定时任务

[root@localhost ~]# crontab -e
2 * * * * sh ~/shell/status.sh
(如果使用定时任务的话,就应该把上面的$n_proc换成指定的某个进程)

【shell脚本】监控服务进程状态_监控进程


邮件已成功发送

【shell脚本】监控服务进程状态_监控进程_02