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

举报
江湖有缘 发表于 2024/09/25 21:47:00 2024/09/25
【摘要】 Linux系统之head命令的基本使用

在这里插入图片描述

一、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 -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)
  -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 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
  udp/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 /home
                     USER        PID ACCESS COMMAND
/home:               root     kernel mount /home

3.2 查看指定设备进程信息

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

[root@openEuler-test ~]# fuser -mv /dev/mapper/openeuler-home
                     USER        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/messages
                     USER        PID ACCESS COMMAND
/var/log/messages:   root       1071 F.... rsyslogd
                     root      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. 测试与验证:在生产环境中使用前,先在测试环境中进行充分测试,以确保命令的行为符合预期。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。