使用fuser命令杀死特定端口服务

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 指定命名空间 ,用于查询端口。可选 tcpudp
-4 / -6 --ipv4 / --ipv6 分别只查询 IPv4IPv6 的套接字。
-l --list-signals 列出所有可用的信号名称。
-s --silent 静默模式,通常用于脚本中只检查进程是否存在,不输出任何信息。
-a --all 显示所有指定的文件,即使没有被任何进程访问。

注意-k 选项默认发送 SIGKILL 信号来强制终止进程。

🚀 实用示例

  • 查看占用 8080 端口的进程

    bash 复制代码
    fuser 8080/tcp

    输出示例:8080/tcp: 1234512345 即为进程ID)

  • 查看详细信息

    bash 复制代码
    fuser -v 8080/tcp

    这会显示更完整的进程信息,比如用户和命令名。

  • 终止占用 8080 端口的进程

    bash 复制代码
    fuser -k 8080/tcp
  • 安全地终止进程(先确认)

    bash 复制代码
    fuser -i -k 8080/tcp
  • 查看所有访问 /mnt/data 挂载点的进程

    bash 复制代码
    fuser -m /mnt/data
  • 查看所有访问 /home/user/file.txt 文件的进程

    bash 复制代码
    fuser /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 :专注于从文件或端口反向查找进程,目的明确,简单直接。