用于检查流程和脚本的脚本如果找不到重启程序

时间:2013-09-13 15:48:47

标签: linux bash process

我正在使用此检查脚本来查看名为CCcam的程序包是否正在运行&如果不是,请重新启动..

#!/bin/sh 
process=`ps auxwww | grep CCcam | grep -v grep | awk '{print $1}'`
if [ -z "$process" ]; then
echo "Couldn't find CCcam running. Restarting server-binary" >> /var/cccamlog/cccam.check 
echo && date >>/var/cccamlog/cccam.check
/usr/local/bin/CCcam -d >> /var/cccamlog/CCcam.log & 
else echo "CCcam is still OK!" >> /var/cccamlog/cccam.check 
fi 

脚本报告“CCcam仍然可以!”

但它没有运行,如果我使用此命令搜索进程: ps x |grep -v grep |grep -c CCcam,我得0,所以我知道这个过程没有运行。

是否还有其他因素需要考虑,可能会让检查脚本误以为CCcam正在运行?例如,程序崩溃/停止脚本正在接收后是否会留下某种标签?

从另一个测试我得到.. 错误:CCcam仍然使用pid运行:

2 个答案:

答案 0 :(得分:4)

if pidof -s CCCam > /dev/null; then
    echo 'It is already running!'
else
    echo 'process not found...'
fi

答案 1 :(得分:3)

在这种情况下,您也可以使用pgrep。它在proc表中查找进程名称CCCam。

if [[ $(pgrep CCCam) ]]; then
   echo "CCCam is running";
else
   echo "Not Running, so I must do something";
   # DO something ....
fi