如何使用 Linux Fuser 命令

介绍

Fuser 命令是一种 Linux 实用程序,旨在查找哪个过程使用某个文件、目录或接口,它还提供有关运行该过程的用户以及访问类型的信息。

如何使用Fuser Utility

您可以浏览fuser 手册页面以获得与fuser一起使用的所有选项的概述。

1fuser
 1[secondary_label Output]
 2No process specification given
 3Usage: fuser [-fMuv] [-a|-s] [-4|-6] [-c|-m|-n SPACE] [-k [-i] [-SIGNAL]] NAME...
 4       fuser -l
 5       fuser -V
 6Show which processes use the named files, sockets, or filesystems.
 7
 8  -a,--all display unused files too
 9  -i,--interactive ask before killing (ignored without -k)
10  -k,--kill kill processes accessing the named file
11  -l,--list-signals list available signal names
12  -m,--mount show all processes using the named filesystems or block device
13  -M,--ismountpoint fulfill request only if NAME is a mount point
14  -n,--namespace SPACE search in this name space (file, udp, or tcp)
15  -s,--silent silent operation
16  -SIGNAL send this signal instead of SIGKILL
17  -u,--user display user IDs
18  -v,--verbose verbose output
19  -w,--writeonly kill only processes with write access
20  -V,--version display version information
21  -4,--ipv4 search IPv4 sockets only
22  -6,--ipv6 search IPv6 sockets only
23  -                     reset options
24
25  udp/tcp names: [local_port][,[rmt_host][,[rmt_port]]]

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

fuser也可以使用 -v 选项,该选项在 verbose 模式下运行工具。 verbose 选项用于产生更多的输出,以便用户可以观察 fuser 正在做什么。

1fuser -v .
1[secondary_label Output]
2                     USER PID ACCESS COMMAND
3/home/sammy:         sammy 17604 ..c.. bash

在这种情况下,该目录中运行的唯一过程是您现在正在运行命令的交互式bash壳。

fuser实用程序在语音模式下运行时,会提供有关进程的USER,PID,ACCESSCOMMAND的信息。ACCESS下的c字符显示了访问类型,在这种情况下意味着 current 目录.还有其他访问类型,如 e executable being run, root 目录,打开 file,和 **mapped 文件或共享库。

如何使用网络接口找到流程

要演示此示例,您将首先使用nc在端口 8002 上创建一个 TCP 倾听器,这样您就可以观察到一个运行过程:

1nc -l -p 8002

在另一个终端窗口中,使用fuser来找到在 TCP 端口 8002 上运行的进程,并使用n选项:

1fuser -v -n tcp 8002
1[secondary_label Output]
2                     USER PID ACCESS COMMAND
38002/tcp:            sammy 17985 F.... nc

<$>[注] 注: 默认情况下,fuser 工具将检查 IPv4 和 IPv6 接口,但您可以使用 -4' 和 -6' 选项来更改此情况,以分别检查仅有 IPv4 或仅有 IPv6 连接。

这个输出表明,使用netcat的过程ID(‘PID’)是‘17985’,而用于启动的命令是‘nc’.过程ID(‘PID’)可以以多种方式使用,包括停止或杀死正在运行的过程。

1fuser -k 8002/tcp
1[secondary_label Output]
28002/tcp:            18056

如果你回到你的第一个终端窗口,你会注意到nc程序已经被杀死并返回壳。

Fuser 工具也可以用来将特定信号发送到一个进程中。当与 -k 选项一起使用时,fuser 命令会将 KILL 信号发送到一个进程中。

1fuser -l
1[secondary_label Output]
2HUP INT QUIT ILL TRAP ABRT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM STKFLT
3CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH POLL PWR SYS

结论

在本文中,您了解了一些例子fuser用于监控 Linux 系统中的使用端口和目录的用途。

接下来,您可能想学习如何使用netstatdu监控其他服务器资源(https://andsky.com/tech/tutorials/how-to-use-top-netstat-du-other-tools-to-monitor-server-resources)。

Published At
Categories with 技术
Tagged with
comments powered by Disqus