下面是一份详细的 Windows 系统中排查 某端口(如 9018)被哪个程序占用 并确定其具体服务来源的完整教程,适合用于日常运维、开发部署排障等场景。
🎯 Windows 查看端口占用及服务来源教程(以 9018 端口为例)
✅ 一、查看端口被哪个进程(PID)占用
在命令行中执行:
netstat -ano | findstr :9018
输出示例:
TCP 0.0.0.0:9018 0.0.0.0:0 LISTENING 16044TCP 127.0.0.1:9018 127.0.0.1:54680 ESTABLISHED 16044
表明端口
9018
正由进程号(PID)为16044
的进程占用。
✅ 二、查找 PID 对应的进程名称
执行命令:
tasklist /FI "PID eq 16044"
输出示例:
映像名称 PID 会话名 会话# 内存使用
========================= ======== ================ =========== ============
java.exe 16044 RDP-Tcp#33 2 454,692 K
可知是
java.exe
占用了该端口。
✅ 三、进一步查看 Java 进程运行的具体服务或项目
使用命令:
wmic process where ProcessId=16044 get CommandLine
或更详细的 PowerShell 命令:
Get-CimInstance Win32_Process -Filter "ProcessId = 16044" | Select-Object CommandLine,ExecutablePath
输出示例:
"E:\Program Files\Java\jdk1.8.0_201\bin\java.exe" -Djava.util.logging.config.file="F:\home\apache-tomcat-courtyard\conf\logging.properties" ... org.apache.catalina.startup.Bootstrap start
✅ 四、确定服务类型和部署路径
根据命令行中的内容,我们可以判断出:
- 当前服务是通过 Tomcat 启动的 Java Web 应用
- Tomcat 安装目录是:
F:\home\apache-tomcat-courtyard
- 配置文件在:
F:\home\apache-tomcat-courtyard\conf\server.xml
✅ 五、确认端口监听配置
打开配置文件:
F:\home\apache-tomcat-courtyard\conf\server.xml
搜索端口配置:
<Connector port="9018" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443" />
说明 Tomcat 是通过这个 Connector 监听 9018 端口。
✅ 六、查看部署了哪个 Web 应用
进入 Tomcat 的 webapps
目录:
F:\home\apache-tomcat-courtyard\webapps\
这里可能包含:
ROOT
目录(默认项目)- 其他文件夹或
.war
文件(例如:myapp.war
、oa.war
、cms\
)
这就是部署在该 Tomcat 上的实际应用。
✅ 七、停止服务的方法
方法一:使用 Tomcat 自带脚本
F:\home\apache-tomcat-courtyard\bin\shutdown.bat
方法二:强制结束进程
taskkill /PID 16044 /F
✅ 八、修改端口避免冲突(如改成 9019)
- 修改
server.xml
中:
<Connector port="9018" ... />
为:
<Connector port="9019" ... />
- 保存后重启服务:
F:\home\apache-tomcat-courtyard\bin\shutdown.bat
F:\home\apache-tomcat-courtyard\bin\startup.bat
✅ 九、可选操作:防止开机自启(如需)
查看任务计划程序或启动项,确保没有将 Tomcat 设置为自动启动。
📌 总结流程图:
netstat 查端口 → 得到 PID → tasklist 查进程名↓是 java.exe → wmic / PowerShell 查启动命令↓判断是 Tomcat / Jar / IDE 启动项目↓定位配置 → 查看 server.xml → 确认端口来源