网站搜索

通过示例了解如何在 Linux 中使用“fuser”命令


Linux 系统管理中最重要的任务之一是进程管理。它涉及监控、发信号处理以及在系统上设置进程优先级的多项操作。

有许多 Linux 工具/实用程序专为监视/处理进程而设计,例如 top、ps、pgrep、kill、killall、nice 以及许多其他工具/实用程序。

在本文中,我们将介绍如何使用名为 fuser 的足智多谋的 Linux 实用程序来查找进程。

建议阅读: 按最高内存和 CPU 使用率查找运行最多的进程

fuser 是一个简单但功能强大的命令行实用程序,旨在根据特定进程正在访问的文件、目录或套接字来定位进程。简而言之,它帮助系统用户使用文件或套接字识别进程。

如何在Linux系统中使用fuser

使用fuser的常规语法是:

fuser [options] [file|socket]
fuser [options] -SIGNAL [file|socket]
fuser -l 

以下是使用 fuser 查找系统上的进程的几个示例。

查找哪个进程访问目录

运行不带任何选项的fuser命令将显示当前访问当前工作目录的进程的PID

fuser .
OR
fuser /home/tecmint

要获得更详细、更清晰的输出,请启用 -v--verbose,如下所示。在输出中,fuser 打印出当前目录的名称,然后是进程所有者 (USER)、进程 ID (PID) 的列、访问类型 (ACCESS) 和命令 (COMMAND) 如下图所示。

fuser -v

访问列下,您将看到由以下字母表示的访问类型:

  1. c – 当前目录
  2. e – 正在运行的可执行文件
  3. f – 打开文件,但是,f 在输出中被忽略
  4. F – 打开文件进行写入,F 也从输出中排除
  5. r – 根目录
  6. m – mmap’ed 文件或共享库

查找哪个进程正在访问文件系统

接下来,您可以确定哪些进程正在访问您的 ~.bashrc 文件,如下所示:

fuser -v -m .bashrc

选项-m NAME 或--mount NAME 表示命名所有访问文件NAME 的进程。如果您将目录拼写为 NAME,它会自动更改为 NAME/,以使用可能安装在该目录上的任何文件系统。

建议阅读: 按 Linux 内存使用情况查找前 15 个进程

如何使用 fusion 终止进程并发出信号

在本节中,我们将使用 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 手册页以获取高级使用选项、其他和更详细的信息。

现在就这样,您可以通过下面的反馈部分联系我们,以获得您可能需要的任何帮助或您希望提出的建议。