介绍
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 选项一起使用,该选项以详细模式运行工具。详细选项用于生成更多输出,以便用户可以观察 fuser
的操作。在当前目录 .
上运行 fuser
,同时包括 -v
选项:
- fuser -v .
Output USER PID ACCESS COMMAND
/home/sammy: sammy 17604 ..c.. bash
在这种情况下,此目录中唯一运行的进程是您当前正在其中运行命令的交互式bash
shell。
在详细模式下运行时,fuser
实用程序会提供有关进程的USER
、PID
、ACCESS
和COMMAND
的信息。在ACCESS
下的c
字符显示了访问的类型,这种情况下表示当前目录。c。还有其他访问类型,例如正在运行的executable,root目录,打开的file以及mapped文件或共享库。
如何查找使用网络套接字的进程
您还可能需要查找使用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)可以在许多方面使用,包括停止或终止正在运行的进程。您可以通过阅读如何使用ps、kill和nice管理Linux中的进程来了解更多有关进程管理的信息。您还可以使用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
来监视其他服务器资源。
Source:
https://www.digitalocean.com/community/tutorials/how-to-use-the-linux-fuser-command