Linux Fuser 命令详解:进程、文件与网络端口管理

引言

fuser 命令是 Linux 系统中一个专门用于查找正在使用特定文件、目录或套接字的进程的工具。它还能提供拥有并运行该进程的用户信息以及访问类型。

如何使用 fuser 工具

您可以查阅 fuser 的手册页(man page),以获取所有可用选项的概述。您也可以单独运行 fuser 命令,不带任何选项,以获取其语法的概览。

  1. fuser
输出
No process specification given Usage: fuser [-fMuv] [-a|-s] [-4|-6] [-c|-m|-n SPACE] [-k [-i] [-SIGNAL]] NAME... fuser -l fuser -V 显示哪些进程正在使用指定的文件、套接字或文件系统。 -a,--all 也显示未使用的文件 -i,--interactive 在终止前询问(不与 -k 结合时忽略) -k,--kill 终止访问指定文件的进程 -l,--list-signals 列出可用的信号名称 -m,--mount 显示所有使用指定文件系统或块设备的进程 -M,--ismountpoint 仅当 NAME 是挂载点时才满足请求 -n,--namespace SPACE 在此命名空间中搜索(file, udp, 或 tcp) -s,--silent 静默操作 -SIGNAL 发送此信号而不是 SIGKILL -u,--user 显示用户 ID -v,--verbose 详细输出 -w,--writeonly 仅终止具有写入权限的进程 -V,--version 显示版本信息 -4,--ipv4 仅搜索 IPv4 套接字 -6,--ipv6 仅搜索 IPv6 套接字 - 重置选项 udp/tcp 名称: [local_port][,[rmt_host][,[rmt_port]]]

如何查看在目录中运行的进程

fuser 也可以与 -v 选项一起使用,以详细模式运行工具。详细模式会生成更多输出,以便用户观察 fuser 的操作。在当前目录“.”上运行 fuser,并包含 -v 选项。

  1. fuser -v .
输出
USER PID ACCESS COMMAND /home/sammy: sammy 17604 ..c.. bash

在这种情况下,只有一个在当前目录中运行的进程,那就是您当前正在运行命令的交互式 Bash Shell。

当以详细模式运行时,fuser 工具会提供有关进程的用户、PID(进程 ID)、访问类型和命令的信息。在 ACCESS 列下的 c 字符表示访问类型,在这种情况下表示当前目录。还有其他访问类型,例如正在运行的可执行文件、根目录、打开的文件以及映射文件或共享库。

如何查找使用网络套接字的进程

您可能还需要查询使用 TCP 和 UDP 套接字的进程。为了演示这个例子,您将首先使用 nc 命令在 8002 端口创建一个 TCP 监听器,以便有一个正在运行的进程供您观察。

  1. nc -l -p 8002

只要它仍在运行,这将阻塞终端。在另一个终端窗口中,使用 fuser 工具并使用 -n 选项查找在 TCP 端口 8002 上运行的进程。

  1. fuser -v -n tcp 8002
输出
USER PID ACCESS COMMAND 8002/tcp: sammy 17985 F.... nc

注意

默认情况下,fuser 工具将检查 IPv4 和 IPv6 套接字,但您可以通过 -4-6 选项分别仅检查 IPv4 或 IPv6 连接。

这个结果显示使用 Netcat 的进程的进程 ID(PID)为 17985,启动它的命令是 ‘nc’。进程 ID(PID)可以用于多种方式,包括停止或终止正在运行的进程。您可以通过阅读《如何使用 ps、kill 和 nice 来管理 Linux 中的进程》来了解更多有关进程管理的信息。您还可以使用 fuser 本身通过使用 -k 标志来终止在特定端口运行的进程。

  1. fuser -k 8002/tcp
输出
8002/tcp: 18056

如果您返回到第一个终端窗口,您会注意到 nc 程序已被终止并返回到 Shell。

fuser 工具还可以用于向进程发送特定的信号。当与 -k 选项一起使用时,fuser 命令会向进程发送 KILL 信号。还有许多其他信号可以发送给特定的运行进程。您可以用 fuser -l 来列出这些信号。

  1. fuser -l
输出
HUP INT QUIT ILL TRAP ABRT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM STKFLT CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH POLL PWR SYS

结论

在本文中,您了解了如何使用 fuser 监控 Linux 系统上正在使用的端口和目录的一些示例用途。当您试图了解系统上可能正在运行的未知进程时,fuser 可能特别有用。

接下来,您可能想要学习如何使用 netstatdu 来监控其他服务器资源。

bannerAds