通过示例了解如何在 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
在访问列下,您将看到由以下字母表示的访问类型:
c
– 当前目录e
– 正在运行的可执行文件f
– 打开文件,但是,f 在输出中被忽略F
– 打开文件进行写入,F 也从输出中排除r
– 根目录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 手册页以获取高级使用选项、其他和更详细的信息。
现在就这样,您可以通过下面的反馈部分联系我们,以获得您可能需要的任何帮助或您希望提出的建议。