如何使用 Linux Fuser 命令
介绍
fuser
命令是一个 Linux 实用程序,旨在查找哪个进程正在使用给定的文件、目录或套接字。它还提供有关拥有运行该进程的用户以及访问类型的信息。
如何使用 fuser 实用程序
您可以查看 fuser
手册页以大致了解与 fuser
一起使用的所有选项。你也可以不带任何选项单独运行 fuser
来大致了解 fuser
语法:
- fuser
OutputNo process specification given
Usage: fuser [-fMuv] [-a|-s] [-4|-6] [-c|-m|-n SPACE] [-k [-i] [-SIGNAL]] NAME...
fuser -l
fuser -V
Show which processes use the named files, sockets, or filesystems.
-a,--all display unused files too
-i,--interactive ask before killing (ignored without -k)
-k,--kill kill processes accessing the named file
-l,--list-signals list available signal names
-m,--mount show all processes using the named filesystems or block device
-M,--ismountpoint fulfill request only if NAME is a mount point
-n,--namespace SPACE search in this name space (file, udp, or tcp)
-s,--silent silent operation
-SIGNAL send this signal instead of SIGKILL
-u,--user display user IDs
-v,--verbose verbose output
-w,--writeonly kill only processes with write access
-V,--version display version information
-4,--ipv4 search IPv4 sockets only
-6,--ipv6 search IPv6 sockets only
- reset options
udp/tcp names: [local_port][,[rmt_host][,[rmt_port]]]
如何查看在目录中运行的进程
fuser
也可以与 -v 选项一起使用,它以详细模式运行该工具。 verbose 选项用于产生更多输出,以便用户可以观察 fuser
正在做什么。在当前目录 .
上运行 fuser
,同时包含 -v
选项:
- fuser -v .
Output USER PID ACCESS COMMAND
/home/sammy: sammy 17604 ..c.. bash
在这种情况下,在此目录中运行的唯一进程是您现在正在运行命令的交互式 bash
shell。
在详细模式下运行时,fuser
实用程序会提供有关 USER
、PID
、ACCESS
和 的信息进程的命令
。 ACCESS
下的 c
字符显示访问类型,在本例中表示当前目录。还有其他访问类型,例如正在运行的可执行文件、根目录、打开的文件以及映射文件或共享库。
如何使用网络套接字查找进程
您可能还需要查找使用 TCP 和 UDP 套接字的进程。为了演示此示例,您将首先使用 nc
在端口 8002 上创建一个 TCP 侦听器,以便您可以观察到一个正在运行的进程:
- nc -l -p 8002
只要它正在运行,这就会阻止终端。在另一个终端窗口中,使用 fuser
通过 -n
选项查找在 TCP 端口 8002 上运行的进程:
- fuser -v -n tcp 8002
Output USER PID ACCESS COMMAND
8002/tcp: sammy 17985 F.... nc
注意:默认情况下,fuser
工具将检查 IPv4 和 IPv6 套接字,但您可以使用 -4
和 -6
选项更改此设置分别检查 IPv4 或 IPv6 连接。
此输出显示使用 netcat 的进程的进程 ID (PID
) 为 17985
,用于启动它的命令为“nc”。进程 ID (PID) 有多种用途,包括停止或终止正在运行的进程。您可以通过阅读如何在 Linux 中使用 ps、kill 和 nice 管理进程来了解有关进程管理的更多信息。您还可以使用 fuser
本身通过使用 -k
标志来终止在特定端口上运行的进程:
- fuser -k 8002/tcp
Output8002/tcp: 18056
如果导航回第一个终端窗口,您会注意到 nc
程序已被终止并返回到 shell。
fuser 实用程序也可用于向进程发送特定信号。当与 -k 选项一起使用时,fuser 命令会向进程发送 KILL 信号。还有许多其他信号可以发送到特定的运行进程。您可以使用 fuser -l
列出这些:
- fuser -l
OutputHUP 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
在您试图了解您的系统上可能正在运行哪些未知进程时特别有用。
接下来,您可能想了解如何使用 netstat
和 du
来监控其他服务器资源。