2

我正在使用这个检查脚本来查看一个名为 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 运行:

4

2 回答 2

4
if pidof -s CCCam > /dev/null; then
    echo 'It is already running!'
else
    echo 'process not found...'
fi
于 2013-09-13T15:56:30.977 回答
4

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

if [[ $(pgrep CCCam) ]]; then
   echo "CCCam is running";
else
   echo "Not Running, so I must do something";
   # DO something ....
fi
于 2013-09-13T16:04:09.390 回答