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

Posted

技术标签:

【中文标题】用于检查特定 php 进程是不是正在运行的 Bash 脚本?【英文标题】:Bash script to check a specific php process is running?用于检查特定 php 进程是否正在运行的 Bash 脚本? 【发布时间】:2015-08-13 05:29:12 【问题描述】:

我正在使用如下的 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】:

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

手册页中的条目

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

【讨论】:

谢谢@user258367。你能举个例子吗。 pgrep -f "$COMMAND LINE" 或 pgrep -x $processname。您可以通过在会话中运行命令 ps -x 来检查命令行或进程名。 感谢@user258367。我已经使用“if pgrep -f php -q chat-server.php > /dev/null”它现在可以工作了。

以上是关于用于检查特定 php 进程是不是正在运行的 Bash 脚本?的主要内容,如果未能解决你的问题,请参考以下文章

如何获取特定进程的pid

PHP / Javascript检查是不是在特定的iframe中运行[重复]

text 检查特定端口上正在运行的进程

检查特定多进程进程对象是否正在运行并通过单击模板中的按钮来停止所述进程?

如何检查正在运行的进程是不是是后台进程? [关闭]

如何使用 C++ 检查进程是不是正在运行