杀死具体进程
执行了 systemctl stop httpd 来关闭 httpd(Apache)服务,但仍然看到类似:
httpd (pid 1785910) already running
表示进程还在运行,说明 httpd 没有被完全停止。
✅ 解决步骤如下:
🔍 第一步:确认并查找 httpd 是否仍有残留进程
ps aux | grep httpd
示例输出:
root 1785910 0.0 0.2 123456 7890 ? Ss 12:34 0:00 /usr/sbin/httpd -DFOREGROUND
apache 1785911 0.0 0.1 123456 4567 ? S 12:34 0:00 /usr/sbin/httpd -DFOREGROUND
...
🧨 第二步:先正常终止,再考虑强制结束
如果 httpd 是由 systemd 管理,先确认服务状态和对应 PID:
sudo systemctl status httpd --no-pager
pgrep -a httpd
确认确实是残留的 httpd 后,优先发送默认的 SIGTERM,让进程有机会清理资源:
sudo pkill httpd
或者只结束指定 PID:
sudo kill 1785910
等待几秒后再次检查。只有确认普通终止无效,而且 PID 仍然存在时,才考虑最后使用:
sudo kill -9 1785910
SIGKILL (-9) 不能被进程捕获,会跳过正常清理流程,不应作为第一步。真正的僵尸进程已经结束执行,kill -9 也清不掉它;应检查并处理它的父进程。
🔁 第三步:再次确认是否彻底关闭
pgrep -a httpd
没有输出时,说明当前没有名为 httpd 的进程。
🧪 第四步:确认端口是否仍被占用(例如 80 端口)
sudo lsof -i :80
如果发现仍有服务监听 80 端口,你可以确认是哪个程序占用了:
sudo netstat -tulnp | grep :80
或者:
sudo ss -tulnp | grep :80
如你希望彻底禁用 httpd,可以执行:
sudo systemctl disable httpd
sudo systemctl mask httpd
mask 会阻止任何方式启动它,包括依赖项。
评论将在接近此处时加载,也可点击立即加载。