直接用 lsof -i :端口号即可查出占用该端口的进程、PID、COMMAND 和 USER;加 -t 参数仅输出 PID,可配合 kill $(lsof -t -i :端口号) 快速终止,监听状态需加 -sTCP:LISTEN 或用 -iUDP 区分协议,sudo 可提升权限查看全部进程。

直接用 lsof -i :端口号 就能查出占用该端口的进程和 PID。
基础命令:查端口对应进程
例如想查 8080 端口被谁占用了:
lsof -i :8080
输出中 PID 列就是进程号,COMMAND 是进程名,USER 是运行用户。如果没结果,说明该端口当前空闲或未被监听。
只显示 PID(适合脚本提取)
加 -t 参数可精简输出,仅返回 PID:
-
lsof -t -i :3306→ 直接输出 MySQL 的 PID(如 1234) - 配合
kill快速终止:kill $(lsof -t -i :8080)
区分监听与已连接状态
默认 lsof -i 显示所有相关连接(包括 ESTABLISHED)。若只想看“正在监听”的服务:
-
lsof -i :22 -sTCP:LISTEN→ 查 SSH 监听进程 -
lsof -iUDP :53→ 查 UDP 53 端口(如 DNS)
注意:-s 指定 TCP 状态,UDP 无 LISTEN 概念,直接用 -iUDP 即可。
权限问题与常见提示
普通用户可能看不到其他用户的进程(如 root 启动的服务):
- 加
sudo获取完整信息:sudo lsof -i :443 - 若提示
command not found,先安装:sudo apt install lsof(Debian/Ubuntu)或sudo yum install lsof(CentOS/RHEL)


















