命令行查看端口占用:快速定位问题的小技巧

在日常维护服务器时,经常会遇到服务启动失败的情况。最常见的原因之一就是端口被占用了。这时候,打开命令行,几条简单的命令就能帮你快速找出是哪个进程在“霸占”端口。

Windows 系统下查看端口占用

如果你用的是 Windows 服务器,打开命令提示符(CMD)或者 PowerShell 就能操作。比如你想查 8080 端口有没有被占用,可以输入:

netstat -ano | findstr :8080

执行后会列出所有包含 8080 的连接信息,其中最后一列是 PID(进程 ID)。接着通过任务管理器查找这个 PID 对应的程序,或者用下面这条命令直接查:

tasklist | findstr <PID>

如果想直接干掉它,可以用:

taskkill /PID <PID> /F

Linux 或 macOS 下更方便

在 Linux 或 macOS 系统中,netstatlsof 都能派上用场。比如查 3306 端口:

netstat -tulnp | grep :3306

或者用 lsof 命令,更直观:

lsof -i :3306

输出结果会显示进程名、PID、用户等信息。如果只想看某个协议,比如 TCP:

lsof -i tcp:80

实际场景举例

有次上线一个 Node.js 应用,启动报错说 3000 端口已被使用。进服务器运行:

lsof -i :3000

发现是一个之前忘记关闭的开发进程还在跑。直接 kill 掉,服务立马恢复正常。这种问题每天都在发生,尤其是在多人共用测试机的环境里。

小贴士

记不住命令没关系,可以写个简单的 shell 脚本封装常用操作。比如创建一个叫 portcheck.sh 的文件:

#!/bin/bash
lsof -i :$1

以后查端口只需要运行 ./portcheck.sh 8080,省时又省心。

掌握这些基础命令,排查端口冲突不再是难题。遇到服务起不来,先看看是不是别的程序悄悄占了你的地盘。