fuser 是 linux 中排查端口占用最直接的工具之一,能一步定位 pid,适合快速诊断和脚本调用;需配合 -v、-n tcp/udp、-4/-6 等选项精准指定协议与地址族,并通过访问类型标识符(如 l 表示 listen)识别真实业务进程,支持安全终止(-k -term)、交互确认(-i)或静默执行(-s)。

fuser 是 Linux 中排查端口占用最直接的工具之一,不依赖完整连接状态解析,能一步定位 PID,适合快速诊断和脚本调用。关键在于指定协议、命名空间和输出粒度,避免漏查或误杀。
确认端口占用并显示详细进程信息
使用 -v(详细模式)配合 -n tcp 或 -n udp 明确协议类型,确保结果准确:
-
fuser -v -n tcp 80—— 查看 TCP 80 端口占用,输出含 USER、PID、COMMAND、访问类型(如 listen)等字段 -
fuser -v 443/tcp—— 等效写法,/tcp 后缀自动启用 tcp 命名空间 - 若同时查 UDP 端口(如 DNS),用
fuser -v -n udp 53
区分 IPv4/IPv6 避免混淆
某些服务可能只监听 IPv4 或 IPv6,而默认 fuser 会同时检查两者,导致结果冗余或遗漏:
- 只查 IPv4:加 -4,例如
fuser -4 -v 8080/tcp - 只查 IPv6:加 -6,例如
fuser -6 -v 8080/tcp - 常见问题:Nginx 或 Apache 默认监听 IPv4,但
fuser 80/tcp可能返回空——此时加 -4 往往就能看到结果
安全终止占用进程
定位到 PID 后,可直接终止,但需注意信号选择与权限:
- 强制终止(SIGKILL):
sudo fuser -k 8080/tcp,立即杀死所有相关进程 - 优雅终止(SIGTERM):
sudo fuser -k -TERM 8080/tcp,给进程机会清理后退出 - 交互式确认:
sudo fuser -k -i 8080/tcp,每杀一个进程前提示确认 - 静默执行(适合脚本):
sudo fuser -s -k 8080/tcp,不输出任何信息,仅执行
排除干扰:识别内核级或特殊访问类型
fuser 输出中每个 PID 后的字母代表访问方式,有助于判断是否为真实业务进程:
- c:进程当前工作目录在此路径(对端口无意义,多见于目录排查)
- e:该进程以该文件为可执行程序(端口场景少见)
- u:UDP 监听;t:TCP 监听;l:LISTEN 状态(重点看这个)
- 若出现 kernel 用户名,说明是内核模块(如 nf_conntrack)在使用,不能 kill











