fuser 是一个用于识别哪些进程正在使用特定文件、文件系统或网络端口的命令行工具。
sudo fuser -k 8080/tcp 命令的作用就是找到占用 8080 TCP 端口的进程并将其强制终止。
https://man7.org/linux/man-pages/man1/fuser.1.html
💡 fuser 的核心功能
fuser 主要用于解决资源占用问题,典型场景包括:
- 排查端口占用:找出哪个进程占用了特定的 TCP 或 UDP 端口。
- 卸载文件系统:当卸载一个存储设备(如U盘)时,如果提示"设备正忙",可以用它找出是哪个进程在使用该设备上的文件。
- 管理打开的文件:查看哪些进程正在使用某个特定的文件或目录。
⚙️ 常用选项
fuser 命令的基本格式是 fuser [选项] 文件/端口。
| 选项 | 长选项 | 作用 |
|---|---|---|
-k |
--kill |
终止所有访问指定文件或端口的进程。 |
-i |
--interactive |
在终止进程前询问用户确认,防止误杀。 |
-v |
--verbose |
详细模式,显示更全面的信息,如进程所属用户、命令等。 |
-m |
--mount |
显示所有访问指定挂载点下任何文件的进程。 |
-n |
--namespace |
指定命名空间 ,用于查询端口。可选 tcp 或 udp。 |
-4 / -6 |
--ipv4 / --ipv6 |
分别只查询 IPv4 或 IPv6 的套接字。 |
-l |
--list-signals |
列出所有可用的信号名称。 |
-s |
--silent |
静默模式,通常用于脚本中只检查进程是否存在,不输出任何信息。 |
-a |
--all |
显示所有指定的文件,即使没有被任何进程访问。 |
注意 :
-k选项默认发送SIGKILL信号来强制终止进程。
🚀 实用示例
-
查看占用 8080 端口的进程
bashfuser 8080/tcp输出示例:
8080/tcp: 12345(12345即为进程ID) -
查看详细信息
bashfuser -v 8080/tcp这会显示更完整的进程信息,比如用户和命令名。
-
终止占用 8080 端口的进程
bashfuser -k 8080/tcp -
安全地终止进程(先确认)
bashfuser -i -k 8080/tcp -
查看所有访问
/mnt/data挂载点的进程bashfuser -m /mnt/data -
查看所有访问
/home/user/file.txt文件的进程bashfuser /home/user/file.txt
📦 如何安装 fuser
如果系统提示 fuser: command not found,说明它没有被安装。fuser 命令包含在 psmisc 软件包中,可以使用系统的包管理器安装:
- Ubuntu/Debian :
sudo apt install psmisc - CentOS/RHEL/Fedora :
sudo dnf install psmisc - Arch Linux :
sudo pacman -S psmisc - openSUSE :
sudo zypper install psmisc
🔗 与其他命令的对比
lsof(List Open Files):功能更强大,可以列出进程打开的所有文件,过滤条件也更丰富。ss/netstat:主要用于查看网络连接、路由表等信息。fuser:专注于从文件或端口反向查找进程,目的明确,简单直接。