同样的问题,我已经解决,
1.首先在宝塔面板内把apache关了,然后查看80端口是否被占用
netstat -ano | findstr :80
2.我这边看到的结果是这样的,
- C:\Users\Administrator>netstat -ano | findstr :80
- TCP 0.0.0.0:80 0.0.0.0:0 LISTENING 14632
- TCP 192.168.13.154:49670 100.64.205.163:80 ESTABLISHED 3148
- TCP [::]:80 [::]:0 LISTENING 14632
复制代码
等于说在apache还没启动的时候,就已经有端口占用了,14632端口,
接下来看14632端口具体是什么
wmic process where "ProcessId=14632" get ProcessId,Name,CommandLine
- C:\Users\Administrator>wmic process where "ProcessId=14632" get ProcessId,Name,CommandLine
- CommandLine Name ProcessId
- "C:\BtSoft\apache\bin\httpd.exe" -k runservice httpd.exe 14632
复制代码
这里可以看到,PID 14632 也是 httpd.exe,路径同样是 C:\BtSoft\apache\bin\httpd.exe
等于说有两个 Apache 实例,一个是PID 6252(主进程) + 15912(子进程)
另一个是PID 14632(独立 httpd 进程),它先占用了 80 端口
这就会导致第二个 Apache(6252)启动时,实际上无法真正绑定 80 端口(因为已被 14632 占用)
几分钟后,可能因健康检查失败、父进程检测到异常,或宝塔尝试的主动健康检查机制清理重复进程啥的,,主动发出了 shutdown 信号 |