用于检查特定php进程的Bash脚本是否正在运行?

时间:2015-08-13 05:29:13

标签: linux bash websocket ratchet

我正在使用nohup命令运行websocket服务器,如下所示。

nohup php -q chat-server.php > ratchet_ws.log &

但它在几个小时后停止工作。所以我创建了一个如下所示的bash脚本

#!/bin/bash
while true
do
if pgrep php > /dev/null
then
    echo  "Running" 
else
   cd /..path../
   nohup php -q chat-server.php > ratchet_ws.log &
fi
sleep 1;
done

然后我用下面的命令运行脚本。

nohup sh chk_process.sh > chk_process.log &

上述脚本的工作如果检查我的chat-server.php是否正在运行,如果它没有运行,那么它将再次启动它。

if pgrep php > /dev/null

但这行是检查任何php进程是否正在运行。但是我希望它只检查我的chat-server.php。

1 个答案:

答案 0 :(得分:1)

您可以使用pgrep -f或pgrep -x选项。

从手册页输入

-f模式通常仅与进程名称匹配。设置-f时,使用完整的命令行 -x仅匹配其名称(或指定了-f的命令行)与模式完全匹配的进程。