跳到主要内容

杀死具体进程


杀死具体进程

执行了 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 会阻止任何方式启动它,包括依赖项。


文章作者: 0xdadream
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 0xdadream !
赏
评论

评论将在接近此处时加载,也可点击立即加载。

  目录