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