如何使用Linux Fuser命令

介绍

fuser 命令是一个专为Linux设计的实用程序,用于查找使用特定文件、目录或套接字的进程。它还提供有关拥有运行该进程的用户以及访问类型的信息。

如何使用 fuser 工具

您可以查看 fuser手册页 以获取有关与 fuser 一起使用的所有选项的概述。您还可以在不使用任何选项的情况下运行 fuser 以获取有关 fuser 语法的概述:

  1. fuser
Output
No 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 选项:

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

在这种情况下,此目录中唯一运行的进程是您当前正在其中运行命令的交互式bash shell。

在详细模式下运行时,fuser实用程序会提供有关进程的USERPIDACCESSCOMMAND的信息。在ACCESS下的c字符显示了访问的类型,这种情况下表示当前目录。c。还有其他访问类型,例如正在运行的executable,root目录,打开的file以及mapped文件或共享库。

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

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

  1. nc -l -p 8002

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

  1. 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标志来终止运行在特定端口上的进程:

  1. fuser -k 8002/tcp
Output
8002/tcp: 18056

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

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

  1. fuser -l
Output
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监视其他服务器资源

Source:
https://www.digitalocean.com/community/tutorials/how-to-use-the-linux-fuser-command