fuser 是 Linux 下用于识别占用文件、目录或挂载点进程的轻量命令;使用 -v 可显示 PID、USER、ACCESS(如 cwd/r/w)等详细信息,-k 可终止进程,需注意僵尸进程、NFS 挂载及权限问题。

fuser 是 Linux 下一个轻量但实用的命令,能快速查出哪些进程正在访问某个文件、目录或挂载点。要识别占用特定目录的进程,核心在于正确使用 fuser 并理解其输出含义。
基础用法:查看目录被哪些进程占用
直接在目标目录后加 -v(verbose)选项,可清晰列出进程 ID、用户、访问类型等信息:
- fuser -v /path/to/directory —— 显示详细占用情况,包括 PID、USER、ACCESS(如 cwd 表示当前工作目录,r 表示读,w 表示写)
- fuser -v /mnt/data —— 若该目录是挂载点,还会显示所有访问该文件系统的进程
常见访问类型说明(重点看 ACCESS 列)
输出中的 ACCESS 字段很关键,不同字母代表不同访问方式:
- cwd:进程当前工作目录设为此目录(最常见原因,进程卡在此处未退出)
- root:进程的根目录(/)被 chroot 到此目录(少见,多见于容器或特殊环境)
- fd:打开的文件描述符指向该目录下的文件或子目录
- mem:内存映射了该目录中的文件(如 mmap 加载的共享库)
强制终止占用进程(谨慎使用)
确认无误后,可用 -k 选项杀死相关进程:
- fuser -k /path/to/directory —— 终止所有访问该目录的进程(发送 SIGKILL)
- fuser -ki /path/to/directory —— 交互式确认,每杀一个进程前提示
- fuser -k -TERM /path/to/directory —— 发送更温和的 SIGTERM,给进程机会清理后退出
排除干扰与提高准确性
某些情况下会看到 “No process found” 却仍无法卸载或删除目录,可能是以下原因:
- 进程已僵死(zombie),但父进程未回收 —— 此时 fuser 不显示,需检查 ps aux | grep defunct
- 目录被 NFS 或其他远程文件系统挂载 —— fuser 可能不完全识别,建议先 umount -l(lazy unmount)再查
- 权限不足导致 fuser 无法读取部分进程信息 —— 尝试加 sudo 执行










