服务启动报错,提示 8080 端口被占用,程序起不来。第一件事是查谁占了它。

windows查看端口占用,命令行最快。按 Win+R 输入 cmd,执行 netstat -ano | findstr :8080,最后一列是 PID,拿到 PID 再执行 tasklist | findstr 1234,进程名就出来了。端口号写成 :8080,冒号不能省,否则会把所有含 8080 的行都搜出来。确认不是系统关键进程,再用管理员权限运行 taskkill /PID 1234 /F 结束它。

不想敲命令就用资源监视器

任务管理器切到「性能」,点「打开资源监视器」,进「网络」标签,监听端口和对应进程都列着。资源监视器里按 CPU 或网络排序,占用高的那个通常就是。PowerShell 里也可以 Get-NetTCPConnection -LocalPort 8080,输出里的 OwningProcess 就是 PID,再配合 Get-Process -Id 1234 查进程名。

几个容易看错的地方

  • 0.0.0.0:8080 是所有网卡都监听,127.0.0.1:8080 只允许本机访问,两者不是一回事。
  • TIME_WAIT 状态的连接不算端口占用,等一两分钟自己会消失。
  • IPv6 的 [::]:8080 可能和 IPv4 同时占着,两个都要查。
  • PID 4 通常是 System 进程,别急着结束,先确认是不是系统服务或驱动在用。

查到了却结束不掉

权限不够是最常见的原因,cmd 要以管理员身份打开,任务管理器也要点「以管理员身份运行」。有些服务带守护进程,结束主进程后又被拉起来,得先去服务管理器里停掉对应的服务,再处理进程。改端口号之前先确认新端口没被占用,改完记得同步防火墙规则。

Docker 映射的端口,netstat 看到的可能是代理进程,实际要 docker ps 看端口映射,再用 docker stop 容器名 释放。虚拟机、WSL 也会占端口,排查时别只盯着本机进程。

windows查看端口占用这套流程不复杂,netstat 找 PID、tasklist 认进程、taskkill 收尾,三步够了。真正要小心的是别把系统服务当成普通程序杀掉,杀之前多看一眼进程路径。