答案1
仅在必要时使用sudo
。列出所有进程,然后指示grep
仅输出包含单词 的行php
。
sudo ps aux | grep php
按照以下标题阅读输出
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
答案2
如果您尝试获取正在运行的 Apache PHP 模块的完整路径,请执行此操作。
Apache 使用的 PHP 文件应命名为libphp5.so
。因此,您可以lsof
通过以下方式运行此命令sudo
:
sudo lsof | grep libphp5.so
这将返回一大堆结果,其中几乎所有结果都显示完整路径,libphp5.so
如果你使用的是 Ubuntu/Debian 系统,则应该是这样的:
/usr/lib/apache2/modules/libphp5.so
如果您尝试监视您的 Apache 服务器以查明哪个文件可能正在阻塞它,请执行此操作。
话虽如此,从你的问题中我不清楚你所说的“如何确认哪个 PHP 文件在 Apache 中运行?”是什么意思,因为重读它让我想到也许你正在试图找出哪个 PHP 脚本阻塞了你的服务器,而不是 Apache 正在加载哪个 PHP 模块?因为 Apache 实际加载的 PHP 模块只是 Apache 使用的 PHP 解析器。但你通过该设置运行的 PHP 脚本是完全不同的东西。
问题在于 Apache 的工作方式是按需解析内容/文件。因此,您需要运行一个可以实时监控 Apache 请求的工具,以获取您正在寻找的信息。您可以通过几种方式从命令行执行此操作。
使用 Apache Top 监控 Apache Web 服务器。
首先,您可以安装并运行Apache 顶部类似于标准 Linux/Unixtop
但对于 Apache 进程来说。例如,这里有一个使用 Apache Top 实时监控 Web 服务器日志文件的简单方法:
apachetop -r 2 -f /var/log/apache2/access.log
将-r 2
每 2 秒刷新一次输出,并-f /var/log/apache2/access.log
告知apache-top
报告提供的 Apache 日志中的信息。在该示例中,它从 Ubuntu/Debian 设置中加载默认的 Apache 日志文件,但您应该更改该完整文件路径以匹配您的实际 Apache 日志文件位置。
使用 ELinks 监控 Apache Web 服务器。
我用来监控服务器上的 Apache 的另一种方法是使用电子链接默认的 Apache 状态 URL 如下:
elinks http://localhost/server-status?refresh=1
ELinks 基本上只是一个基于文本的 Web 浏览器。因此,如果您从命令行运行它,它只会加载传递给它的 URL,如果您注意到 URL 包含参数,该refresh=1
参数基本上只是告诉它server-status
每秒刷新一次。