linux - 用于检查进程并在未找到时重新启动程序的脚本

标签 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 运行:

最佳答案

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

关于linux - 用于检查进程并在未找到时重新启动程序的脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18790421/

相关文章:

linux下php从串口读取数据

linux - 如何在 Linux shell 中使用反引号?

linux - 在 if 语句中使用 grep

c# - 如何从网站在客户端上执行应用程序?

python - 按名称杀死进程?

c++ - 定期调用 GetProcessTimes 返回相同的结果

linux - 在bash中重命名大量文件

regex - Linux 用包含双引号的变量替换

python - 使用 gdalwarp 重新采样导致 IndentationError : unexpected indent

bash - makefile中的多行回显