生活不只是眼前的苟且,还有诗和远方!

linux下用脚本实现:监控一个进程,不存在则将其启动

方法1:

#!/bin/bash

while [ 1 ]
do
procID=`pgrep test`
if [ “” == “$procID” ];
then
/root/test -d
fi
usleep 1000
done &

注:1、pgrep 根据给出的进程名判断是否有这个名字的进程。如果有这个名字的进程正常退出,退出值0.如果没有这个名字的进程异常退出,退出值1。

2、ps -p 根据给定的pid参数判断是否有这个进程,如果有这个进程正常退出,退出值0.如果没有这个进程异常退出,退出值1。
例如: apple@ubuntu:~$ ps -p 2442

3、最后加 & 符号,表示让脚本在后台执行,即将shell关闭后 程序仍在运行。

下边是监控多个进程,只需添加一个循环:

#!/bin/bash

while [ 1 ]
do

for procname in proc1 proc2  #需要检测的进程名字

do
procID=`pgrep $procname`
if [ “” == “$procID” ];
then
/root/$procname-d
fi

done
usleep 1000
done &

另附参考例子:

#!/bin/sh

#其实sh是链接到busybox的

while [1 -eq 1]  #死循环
do 
   for procname in proc1 proc2  #需要检测的进程名字
   do
      pgrep $procname
      if [0 -ne $? ]  #如果进程不存在就重启它
      then
         ./$prconame
      fi
   done
   sleep 10
done

方法2:

服务器上运行了一些小工具属于非服务类的,程序进程本身不是很稳定总是异常关闭写个脚本监视它,判断进程是否存在并启动该进程。

1.Linux判断进程是否存在并启动该进程

#!/bin/bash
#判断进程是否存在,如果不存在就启动它
PIDS=`ps -ef |grep myprocess |grep -v grep | awk '{print $2}'`
if [ "$PIDS" != "" ]; then
echo "myprocess is runing!"
else
cd /root/
./myprocess
#运行进程
fi

2.linux判断进程是否存在并重启该进程

#!/bin/bash
#判断进程是否存在,如果不存在就启动它如果存在就重启它
PIDS=`ps -ef |grep myprocess |grep -v grep | awk '{print $2}'`
if [ "$PIDS" != "" ]; then
kill -9 $PIDS
#先关闭进程,在运行此进程
cd /root/myprocess
sudo ./myprocess
#重新运行进程
else
cd /root/myprocess
sudo ./myprocess
#运行进程
fi

最后编辑crontab -e 按需要设置运行时间。

 

本文出自:https://blog.csdn.net/dc_show/article/details/41806265

http://lib.csdn.net/article/linux/33370

 

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据