了解如何在 Linux 中使用“fuser”命令
Linux 系统管理中最重要的任务之一是进程管理。它涉及监控下的几个操作、向进程发送信号以及在系统上设置进程优先级。
有许多 Linux 工具/实用程序专为监控/处理进程而设计,例如top、ps、pgrep、kill、killall、nice以及许多其他工具/实用程序。
在本文中,我们将揭示如何使用资源丰富的 Linux 实用程序fuser来查找进程。
建议阅读: 按内存和 CPU 使用率查找运行最频繁的进程
fuser是一个简单但功能强大的命令行实用程序,旨在根据特定进程正在访问的文件、目录或套接字来定位进程。简而言之,它可以帮助系统用户识别使用文件或套接字的进程。
如何在 Linux 系统中使用 fuser
使用fuser 的常规语法是:
# fuser [options] [file|socket] # fuser [options] -SIGNAL [file|socket] # fuser -l
下面是使用fuser定位系统上进程的几个示例。
查找正在访问目录的进程
运行不带任何选项的fuser命令将显示当前访问当前工作目录的进程的PID 。
$ fuser . OR $ fuser /home/example
要获得更详细、更清晰的输出,请启用-v
或,--verbose
如下所示。在输出中,fuser打印出当前目录的名称,然后打印出进程所有者 ( USER )、进程 ID ( PID )、访问类型 ( ACCESS ) 和命令 ( COMMAND ) 的列,如下图所示。
$ fuser -v
在ACCESS列下,您将看到由以下字母表示的访问类型:
c
– 当前目录e
– 正在运行的可执行文件f
– 打开文件,但是f被遗漏在输出中F
– 打开文件进行写入,F也被排除在输出之外r
– 根目录m
– mmap 文件或共享库
查找正在访问文件系统的进程
接下来,您可以确定哪些进程正在访问您的~.bashrc
文件,如下所示:
$ fuser -v -m .bashrc
选项-m
NAME 或--mount
NAME表示命名访问文件NAME 的所有进程。如果您将目录拼写为NAME,则会自动更改为NAME/
,以使用可能安装在该目录上的任何文件系统。
建议阅读: 在 Linux 中查找按内存使用率排名前 15 位的进程
如何使用 fuser 终止进程并发出信号
在本节中,我们将学习如何使用fuser来终止进程并向进程发送信号。
为了终止访问文件或套接字的进程,请使用-k
或--kill
选项,如下所示:
$ sudo fuser -k .
要以交互方式终止一个进程,当系统要求您确认是否要终止访问文件或套接字的进程时,请使用-i
或--interactive
选项:
$ sudo fuser -ki .
前两个命令将终止访问当前目录的所有进程,发送给进程的默认信号是SIGKILL,除非使用-SIGNAL 。
建议阅读: Linux 中的 Kill、Pkill 和 Killall 命令指南
-l
您可以使用或选项列出所有信号--list-signals
,如下所示:
$ sudo fuser --list-signals
因此,您可以按照下一个命令向进程发送信号,其中SIGNAL是上面输出中列出的任何信号。
$ sudo fuser -k -SIGNAL
例如,下面的命令将HUP信号发送给所有打开目录的进程/boot
。
$ sudo fuser -k -HUP /boot
尝试阅读fuser手册页以获取高级使用选项以及其他更详细的信息。
目前就是这样,您可以通过下面的反馈部分联系我们,以获得您可能需要的任何帮助或您希望提出的建议。