Bash 检查特定 php 进程的脚本是 运行?

Bash script to check a specific php process is running?

我运行正在使用如下 nohup 命令连接 websocket 服务器。

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

但它在几次 hours.So 后停止工作我创建了一个 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 &

上面脚本的工作如果检查我的聊天-server.php是否是运行ning如果不是运行ning然后它会重新开始。

if pgrep php > /dev/null

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

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

来自手册页的条目

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