Linux系统之fuser命令的基本使用

embedded/2024/11/28 8:10:26/

Linux系统之fuser命令的基本使用

  • 一、fuser命令介绍
  • 二、fuser命令使用帮助
    • 2.1 help帮助信息
    • 2.1 基本语法
      • ①通用选项
      • ②文件/设备相关选项
      • ③网络相关选项
      • ④进程操作选项
      • ⑤其他选项
  • 三、fuser命令的基本使用
    • 3.1 查找挂载点的进程
    • 3.2 查看指定设备进程信息
    • 3.3 查找监听特定端口的进程
    • 3.4 查找使用特定文件的进程
  • 四、注意事项

在这里插入图片描述

一、fuser命令介绍

fuser 是一个在类 Unix 系统中非常有用的命令行工具,它可以帮助用户找出哪些进程正在使用指定的文件、文件系统或网络端口。这对于需要确定某个资源被哪个进程占用的情况特别有用,比如当你尝试卸载一个挂载点但系统提示设备忙时。对于阻塞特别设备,此命令列出了使用该设备上任何文件的进程。

二、fuser命令使用帮助

2.1 help帮助信息

命令行下的help帮助信息

[root@openEuler-test ~]# fuser --help
fuser: Invalid option --help
Usage: fuser [-fIMuvw] [-a|-s] [-4|-6] [-c|-m|-n SPACE][-k [-i] [-SIGNAL]] NAME...fuser -lfuser -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)-I,--inode            use always inodes to compare files-k,--kill             kill processes accessing the named file-l,--list-signals     list available signal names-m,--mount            show all processes using the named filesystems orblock 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 onlyudp/tcp names: [local_port][,[rmt_host][,[rmt_port]]]

2.1 基本语法

fuser [-<选项>] <文件/目录/端口号>

①通用选项

  • -a, --all: 显示命令行中指定的所有文件,包括那些当前没有被任何进程使用的文件。
  • -s, --silent: 静默模式。如果没有进程使用指定的文件或端口,则不显示任何输出。
  • -u, --user: 在输出中显示每个进程对应的用户名。
  • -v, --verbose: 详细模式。提供更详细的输出信息。
  • -V, --version: 显示 fuser 命令的版本信息。

②文件/设备相关选项

  • -I, --inode: 总是使用 inode 号来比较文件,而不是路径名。
  • -m, --mount: 显示所有正在使用指定挂载点或块设备的进程。
  • -M, --ismountpoint: 只有当指定的名称是一个挂载点时才执行请求。
  • -w, --writeonly: 只杀死具有写权限的进程。

③网络相关选项

  • -n, --namespace SPACE: 指定搜索的名字空间(可以是 fileudptcp)。
  • -4, --ipv4: 仅搜索 IPv4 套接字。
  • -6, --ipv6: 仅搜索 IPv6 套接字。

④进程操作选项

  • -k, --kill: 杀死访问指定文件或端口的所有进程。
  • -i, --interactive: 在杀死进程之前询问用户(只有与 -k 一起使用时有效)。
  • -SIGNAL: 发送这个信号代替默认的 SIGKILL 信号(只有与 -k 一起使用时有效)。

⑤其他选项

  • -l, --list-signals: 列出可用的信号名称。
  • NAME...: 要检查的一个或多个文件名、目录名或网络端口号。

三、fuser命令的基本使用

3.1 查找挂载点的进程

查询当前的文件系统

[root@openEuler-test ~]# df -hT
Filesystem                 Type      Size  Used Avail Use% Mounted on
/dev/mapper/openeuler-root ext4       69G  2.3G   63G   4% /
devtmpfs                   devtmpfs  4.0M     0  4.0M   0% /dev
tmpfs                      tmpfs     3.7G     0  3.7G   0% /dev/shm
tmpfs                      tmpfs     4.0M     0  4.0M   0% /sys/fs/cgroup
tmpfs                      tmpfs     1.5G  8.8M  1.5G   1% /run
tmpfs                      tmpfs     3.7G     0  3.7G   0% /tmp
/dev/mapper/openeuler-home ext4      512G   30M  486G   1% /home
/dev/sda2                  ext4      974M  175M  732M  20% /boot

执行以下命令,这将列出所有正在使用/home 的进程 ID。

[root@openEuler-test ~]# fuser -mv /homeUSER        PID ACCESS COMMAND
/home:               root     kernel mount /home

3.2 查看指定设备进程信息

查看指定设备上的进程信息,包括进程的用户、进程ID、对设备的访问方式和命令,此处显示了/dev/mapper/openeuler-home设备上正在使用的进程信息。

[root@openEuler-test ~]# fuser -mv /dev/mapper/openeuler-homeUSER        PID ACCESS COMMAND
/dev/dm-2:           root     kernel mount /home

3.3 查找监听特定端口的进程

显示出所有正在监听 TCP 端口 80 的进程。

[root@openEuler-test ~]# fuser -n tcp 80
80/tcp:               1944 21789 21790 21797

3.4 查找使用特定文件的进程

在当前终端,监控日志文件。

tail -f /var/log/messages

在这里插入图片描述

新建一个终端,执行以下命令,列出所有正在使用/var/log/messages 的进程 ID。

[root@openEuler-test ~]# fuser  -v /var/log/messagesUSER        PID ACCESS COMMAND
/var/log/messages:   root       1071 F.... rsyslogdroot      25183 f.... tail

四、注意事项

  1. 谨慎使用 -k 选项:在使用 -k 杀死进程之前,请确保你了解这些进程的功能及其对系统的影响。
  2. 结合 -i 选项确认操作:使用 -i 选项可以在杀死进程前要求用户确认,以防止误操作。
  3. 仔细检查目标文件或端口:确保指定正确的文件、目录或网络端口号,避免影响不相关的资源。
  4. 理解命令输出:熟悉 fuser 的输出格式,以便正确解读哪些进程正在使用指定的资源。
  5. 利用 -u 查看用户名:使用 -u 选项可以显示每个进程对应的用户名,帮助更好地识别和管理进程。
  6. 选择合适的命名空间:通过 -n 选项选择正确的命名空间(如 file, tcp, udp)来精确查找相关资源。
  7. 注意权限问题:运行 fuser 可能需要足够的权限,特别是在处理系统关键文件或端口时,可能需要 root 权限。
  8. 考虑使用 -s 静默模式:当不需要任何输出信息时,可以使用 -s 选项来静默执行,适用于脚本中自动化处理。
  9. 避免滥用 -k 信号:除非必要,否则不要随意更改默认的 SIGKILL 信号,因为这可能导致进程无法正常关闭。
  10. 测试与验证:在生产环境中使用前,先在测试环境中进行充分测试,以确保命令的行为符合预期。

http://www.ppmy.cn/embedded/141143.html

相关文章

Maven高级篇

本篇主要讲解做项目过程中学习到一些关于maven使用的知识&#xff0c;主要包括分模块设计、继承&#xff0c;继承中的版本锁定&#xff0c;maven的聚合以及maven私服。 目录 一、分模块设计 二、继承 三、继承中的版本锁定 四、maven的聚合 五、maven私服 一、分模块设计…

设计模式学习之——责任链模式

责任链模式的基本概念 定义&#xff1a;责任链模式&#xff08;Chain of Responsibility Pattern&#xff09;是一种行为型设计模式&#xff0c;它允许多个对象按照一定顺序处理请求&#xff0c;并且每个对象可以选择自己是否处理该请求或者将其传递给下一个对象处理。 核心思…

详解PyTorch中的Sequential容器:构建与优化简单卷积神经网络

详解PyTorch中的Sequential容器&#xff1a;构建与优化简单卷积神经网络 Sequential 是 PyTorch 中的一个容器模块&#xff0c;它按照在构造函数中添加它们的顺序来组织多个子模块&#xff08;通常是网络层&#xff09;。Sequential 容器允许用户快速串联多个模块&#xff0c;…

[UUCTF 2022 新生赛]ez_rce

[UUCTF 2022 新生赛]ez_rce 我们来分析一下这个代码&#xff1a; 首先是isset看我们有没有传一个为空的值&#xff0c;如果为空就输出居然都不输入参数&#xff0c;可恶!!!!!!!!!不为空就GET传参赋值给$code &#xff0c;接着 如果 $code 中不包含这些模式中的任何一个&#x…

git merge 排除文件

方法一&#xff1a; 在Git中&#xff0c;如果你想在合并时排除特定文件&#xff0c;你可以使用.gitattributes文件来指定合并策略。你可以设置一个自定义合并策略来忽略特定文件的合并。 首先&#xff0c;在仓库的根目录下创建或编辑.gitattributes文件&#xff0c;并添加以…

MySQL底层概述—4.InnoDB数据文件

大纲 1.表空间文件结构 (1)表空间Tablesapce (2)段Segment (3)区Extend (4)页Page (5)行Row 2.Page结构 (1)页结构各部分说明 (2)页结构整体划分 3.行记录格式 (1)行格式分类 (2)COMPACT行记录格式 (3)Compact中的行溢出机制 (4)其他行格式记录 1.表空间文件结构…

设计模式:12、中介者模式

目录 0、定义 1、中介者模式的四种角色 2、中介者模式的UML类图 3、示例代码 0、定义 用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显示地相互引用&#xff0c;从而使其耦合松散&#xff0c;而且可以独立地改变他们之间的交互。 1、中介者模式的四种角色 …

C++ 类和对象(初始化列表)

目录 一、前言 二、正文 1.初始化列表 1.1初始化的格式 1.2初始化列表的使用 1.2.1引用成员变量初始化 1.2.2const成员变量 1.2.3没有默认构造函数的成员变量必须在初始化列表初始化 2.成员变量声明处给缺省值 一、前言 前面我们已经用所学知识运算符重载写了一个日期计…