定位并终止僵死PHP进程需先用ps aux | grep -E "php|php-fpm"筛选可疑PID,再以kill PID温和终止;若无效,用kill -9 -PGID或pkill -f精准强制终结,并清理PHP-FPM残留socket、PID文件及僵尸子进程。

定位并终止僵死的PHP进程
银河麒麟系统中PHP脚本常以守护进程、Cron任务或Web服务器模块形式长期驻留,一旦异常退出或陷入无限循环,会持续占用CPU与内存,导致Web服务响应延迟、定时任务堆积甚至Apache/Nginx子进程耗尽。必须先精准识别真身,再分级终结。
打开终端(Ctrl + Alt + T),执行:
ps aux | grep -E "php|php-fpm" | grep -v grep
重点筛查三类危险信号:USER列为root但CMD含/tmp/或/dev/shm/路径;STAT列显示为D(不可中断)或R(持续高CPU);PPID为1且无对应systemd服务注册。记下所有可疑PID。
对每个PID执行温和终止:
kill PID
这会发送SIGTERM,PHP内置的pcntl_signal()若已注册SIGTERM处理器,可触发数据库连接关闭、临时文件清理等逻辑。若3秒后ps -p PID仍有输出,说明进程已屏蔽信号或卡在内核态——必须升级为强制手段。
强制清除顽固PHP进程树
单个kill -9可能只杀掉主进程,而其fork出的子进程(如curl异步回调、exec调用的shell子任务)仍在后台游荡。必须连根拔起整个进程组。
方法一:按进程组ID(PGID)批量终结
先查PGID:ps -o pid,pgid,sid,comm -p PID | tail -n1 → 得到第二列数字
再杀全组:kill -9 -PGID(注意负号)
方法二:用pkill按启动参数精准匹配
例如某PHP脚本通过 /usr/bin/php /var/www/cron/run.php 启动,则执行:
pkill -f "/var/www/cron/run.php"
【必须加-f参数】:不加则pkill只匹配进程名(php),会误杀所有PHP解释器,包括正在运行的php-fpm master进程,导致网站全部502。
清理PHP-FPM残留服务与Socket文件
PHP-FPM作为常驻服务,主进程退出后,其监听的Unix socket(如 /run/php/php7.4-fpm.sock)和PID文件(如 /run/php/php7.4-fpm.pid)若未被自动清理,新实例启动时会报“Address already in use”或“Failed to open PID file”,必须手动擦除。
第一步:确认fpm服务状态
systemctl --user is-active php7.4-fpm.service 2>/dev/null || echo "用户级服务未启用"
sudo systemctl is-active php7.4-fpm 2>/dev/null || echo "系统级服务未启用"
第二步:停止并禁用(若存在)
sudo systemctl stop php7.4-fpm && sudo systemctl disable php7.4-fpm
第三步:删除残留socket与pid文件
sudo rm -f /run/php/php7.4-fpm.* /var/run/php/php7.4-fpm.*
第四步:清空PHP缓存目录(防止opcode缓存污染)
sudo rm -rf /var/cache/php/*
扫描并回收僵尸PHP子进程
PHP脚本中若使用pcntl_fork()创建子进程,但未调用pcntl_wait()回收,子进程退出后会变成Z状态僵尸进程,长期积累将耗尽进程表项,引发“fork: Cannot allocate memory”错误。
① 查找所有PHP相关的僵尸进程:
ps aux | awk '$8 ~ /Z/ && $11 ~ /php/'
② 提取其父进程PID(PPID):
ps -eo pid,ppid,comm | awk '$3 ~ /php/ && $1 in z {print $2}' z="$(ps aux | awk '$8 ~ /Z/ && $11 ~ /php/ {print $2}' | tr '\n' ' ')" 2>/dev/null
③ 对每个PPID发送SIGCHLD信号,促使其主动回收:
kill -s SIGCHLD PPID
④ 若仍不消失,且PPID非1,则kill -9 PPID;若PPID恒为1(即已被init收养),说明父进程已死,无需操作——init会在下次周期性扫描中自动清理。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











