使用kill -9强制终止Apache2进程后新进程反复生成的问题咨询
使用kill -9强制终止Apache2进程后新进程反复生成的问题咨询
嗨,我来帮你捋清楚这个问题~
你遇到的情况其实是Linux系统里的服务管理机制在“起作用”!现在大多数Linux发行版用的是systemd(或者老一点的sysvinit、upstart)这类服务管理器,它们的核心职责之一就是保证托管的服务持续运行。当你用kill -9直接暴力干掉Apache2的进程时,服务管理器会立刻检测到进程意外退出,触发预设的自动重启规则,所以你刚杀完一批,新的进程马上就被拉起来了。
你的kill命令本身没什么语法问题——ps -ef | grep -i '[a]pache*' | awk '{print $2}'这个过滤逻辑还挺巧妙,用[a]pache避免了grep自身进程被匹配到。但核心问题是没搞定服务管理器的自动重启机制。
给你几个靠谱的解决办法:
优先用标准服务停止命令(这才是彻底停止的正确姿势):
如果是systemd系统(比如Ubuntu 16.04+、CentOS 7+):sudo systemctl stop apache2如果是老版sysvinit系统:
sudo service apache2 stop # 或者 sudo /etc/init.d/apache2 stop这些命令会正常通知服务管理器停止Apache,不会触发自动重启。
如果一定要用kill命令(紧急场景):
先让服务管理器放弃对Apache的监控,再杀进程:# 临时禁用并停止Apache服务(systemd) sudo systemctl disable --now apache2 # 再清理残留进程 sudo pkill -9 apache2或者先执行标准停止命令,再检查是否有残留进程,有就用kill清理:
sudo systemctl stop apache2 # 检查是否还有Apache进程 ps -ef | grep -i apache2 # 有残留的话再杀 sudo kill -9 残留PID
总结一下:直接kill进程只是“治标”,服务管理器会自动补位;用标准服务停止命令或者先禁用服务的自动重启,才能“治本”~
备注:内容来源于stack exchange,提问作者acgbox
相关产品推荐
相关产品推荐

