在Linux系统中,查看PHP进程是日常运维和开发中常见的操作,尤其是在排查服务异常、监控资源占用或确保PHP-FPM/Apache等进程正常运行时,以下是详细的命令介绍及使用场景,帮助您高效管理PHP相关进程。

基础进程查看命令
-
ps
命令
ps
是Linux中最基础的进程查看工具,通过组合参数可以筛选PHP进程。- 查看所有PHP进程:
ps -ef | grep php
该命令会列出所有包含“php”字符串的进程,包括主进程和子进程,输出结果包含进程ID(PID)、父进程ID(PPID)、CPU占用、内存占用等信息。
- 查看特定用户运行的PHP进程:
ps -ef | grep php | grep username
若需排查某个用户(如www-data)的PHP进程,可通过
grep
二次过滤。 - 查看PHP-FPM进程:
若使用PHP-FPM(FastCGI Process Manager),可通过以下命令查看主进程和工作进程:ps -ef | grep php-fpm
主进程通常以“master”标识,工作进程(子进程)数量由
pm.max_children
配置决定。(图片来源网络,侵删)
- 查看所有PHP进程:
-
pgrep
命令
pgrep
更简洁,可直接通过进程名或关键词查找PID:pgrep -f php
-f
参数表示匹配完整命令行,适合查找包含“php”的进程,若需列出所有匹配的PID,可添加-l
参数显示进程名。
实时监控进程状态
-
top
/htop
命令top
:动态查看进程资源占用,按CPU
或MEM
排序可快速定位高负载PHP进程:top -p $(pgrep -f php)
该命令会仅显示PHP进程的实时状态,便于监控异常进程。
(图片来源网络,侵删)htop
(需安装):比top
更直观,支持树形结构展示进程父子关系,操作更友好:htop | grep php
-
pstree
命令
查看PHP进程的层级关系,适合分析PHP-FPM等进程树:pstree -p | grep php
输出会以树形结构展示PHP进程及其子进程,帮助理解进程管理架构。
详细进程分析工具
-
lsof
命令
查看PHP进程打开的文件、网络连接等资源,适用于排查端口占用或文件句柄泄漏:lsof -p $(pgrep -f php)
可结合
grep
筛选特定网络连接(如lsof -i :9000
查看监听9000端口的PHP进程)。 -
systemctl
命令(适用于systemd服务)
若PHP以系统服务运行(如php-fpm.service),可通过systemctl
管理:systemctl status php-fpm.service # 查看服务状态 journalctl -u php-fpm.service # 查看服务日志
常见PHP进程管理场景
场景 | 命令示例 | 说明 |
---|---|---|
查找所有PHP进程 | ps -ef | grep php |
基础排查,适合快速定位进程 |
监控PHP-FPM进程数 | ps -C php-fpm -o pid,ppid,cmd |
查看PHP-FPM主进程和工作进程的PID及命令行 |
强制终止异常进程 | kill -9 $(pgrep -f php) |
需谨慎使用,可能导致服务中断;建议先用kill 尝试 graceful termination |
查看进程内存占用 | ps -e -o pid,ppid,cmd,%mem,%cpu --sort=-%mem | grep php |
按内存占用排序,定位高内存消耗的PHP进程 |
相关问答FAQs
Q1: 如何查看PHP-FPM进程的配置参数?
A1: 可通过PHP-FPM的主进程配置文件(如/etc/php/7.4/fpm/php-fpm.conf
)或命令行参数查看,若主进程已启动,可通过以下命令获取启动参数:
ps -ef | grep php-fpm | grep master
输出中的--fpm-config
路径即为配置文件位置。php-fpm -t
可测试配置语法有效性。
Q2: 为什么ps -ef | grep php
会显示包含“grep”的进程?
A2: 因为grep php
本身也是一个进程,其命令行包含“php”字符串,因此会被grep
匹配到,可通过以下方式过滤:
ps -ef | grep '[p]hp' # 使用grep的正则表达式特性,避免匹配自身
或使用pgrep -f php
,它不会返回grep进程本身。