一、作用
fuser 用于查找哪个进程占用了指定文件、目录、套接字、端口、挂载点,快速定位占用资源的 PID,常用于:
- 无法卸载磁盘(设备忙
device busy) - 端口被占用,想杀死占用进程
- 查看谁在读写某个文件
二、基础语法
fuser [选项] 目标(文件/端口/挂载点)三、常用核心选项
1. 输出展示类
| 参数 | 说明 |
|---|---|
-m | 指定挂载点/文件系统,查看该分区所有占用进程 |
-n <空间> | 指定查询空间:file(文件,默认)、tcp、udp |
-4 | 只看 IPv4 连接 |
-6 | 只看 IPv6 连接 |
-a | 显示所有指定文件,无进程占用也打印 |
-v | 详细模式,打印 PID、用户、命令,最常用 |
-i | 交互模式,杀进程前询问确认 |
2. 信号/杀进程类
| 参数 | 说明 |
|---|---|
-k | 直接杀死占用目标的进程(默认发 SIGKILL) |
-l | 列出所有可用信号名称 |
-s <信号> | 指定发送信号,搭配 -k 使用 |
四、高频实操示例
1. 查看哪个进程占用文件/目录
# 简单查看占用进程PID
fuser /mnt/data/file.txt
# 详细信息(推荐):用户、PID、程序名
fuser -v /mnt/data2. 卸载磁盘提示 device busy,查找占用
# -m 扫描整个挂载分区所有占用进程
fuser -vm /mnt/data
# 直接杀掉所有占用进程
fuser -vmk /mnt/data3. 查询端口占用(TCP/UDP)
格式:-n tcp 端口号
# 查看80端口占用
fuser -v -n tcp 80
# IPv4 3306端口并杀死进程
fuser -4vk -n tcp 3306
# UDP 53端口
fuser -v -n udp 534. 交互杀死进程(防止误杀)
fuser -vi -n tcp 8080执行后会逐个询问 Kill process 1234? (y/N)
5. 指定信号终止进程
# 先发优雅退出信号 SIGTERM(15),而非强制kill
fuser -k -s 15 -n tcp 80
# 查看所有信号
fuser -l五、输出符号含义(-v 里进程后的标记)
c:当前工作目录e:可执行程序(进程本身)f:打开的文件F:写模式打开文件r:根目录m:共享库/映射文件
六、与 lsof 对比
- fuser:输入资源(文件/端口)→ 输出 PID,轻量化,适合批量杀占用进程
- lsof:输入 PID/资源 → 输出全部打开文件,信息更全,排查细节更强
场景选择:
- 想快速卸载磁盘、释放端口、一键杀占用进程 →
fuser -k - 需要看完整打开文件、管道、套接字详情 →
lsof
七、注意事项
- 必须 root 权限才能查看其他用户进程、低端口占用;普通用户只能看自己进程
fuser -k强制杀进程会丢失未保存数据,优先用-s 15优雅终止- 查询端口时不能加
/,直接写数字80,不要80/tcp - 部分精简系统(alpine)默认不带 fuser,需安装
psmisc包# CentOS/RHEL yum install psmisc # Debian/Ubuntu apt install psmisc # Alpine apk add psmisc