在日常维护服务器时,经常会遇到服务启动失败的情况。最常见的原因之一就是端口被占用了。这时候,打开命令行,几条简单的命令就能帮你快速找出是哪个进程在“霸占”端口。
Windows 系统下查看端口占用
如果你用的是 Windows 服务器,打开命令提示符(CMD)或者 PowerShell 就能操作。比如你想查 8080 端口有没有被占用,可以输入:
netstat -ano | findstr :8080
执行后会列出所有包含 8080 的连接信息,其中最后一列是 PID(进程 ID)。接着通过任务管理器查找这个 PID 对应的程序,或者用下面这条命令直接查:
tasklist | findstr <PID>
如果想直接干掉它,可以用:
taskkill /PID <PID> /F
Linux 或 macOS 下更方便
在 Linux 或 macOS 系统中,netstat 和 lsof 都能派上用场。比如查 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,省时又省心。
掌握这些基础命令,排查端口冲突不再是难题。遇到服务起不来,先看看是不是别的程序悄悄占了你的地盘。