Linux系统使用Fuser命令的方法

什么是Fuser命令?

fuser命令是一个非常聪明的unix实用程序,用于查找正在使用某个文件、目录或socket的进程。 它还提供有关拥有该进程的用户和访问类型的信息。。fuser工具显示了使用指定文件或文件系统的每个进程的进程ID(PID)。

安装

如果你的精简版运行fuser提示如下信息:

-bash: fuser: command not found

请执行如下命令安装:

[winbert@winbert-server ~]$ sudo yum -y install psmisc

如何使用fuser命令?

man命令可用于查看任何命令的帮助手册,但是学习新知识(尤其是linux命令)的最佳方法是通过阅读真实的示例,并且不断地在终端中键入命令。 在终端中运行以下命令,以获取有关fuser实用程序的使用选项的信息。

[winbert@winbert-server ~]$ fuser
No process specification given
Usage: fuser [-fMuvw] [-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)
 -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
 -      reset options

 udp/tcp names: [local_port][,[rmt_host][,[rmt_port]]]

如何查看使用某个目录的进程

fuser序可以与-v选项一起使用,该选项以详细模式运行该工具。 verbose选项用于在计算机屏幕上生成详细输出,因此用户可以实时查看实用程序正在执行的操作。

[winbert@winbert-server ~]$ fuser -v .
      USER  PID ACCESS COMMAND
/home/winbert:  winbert 1435 ..c.. bash

上面的输出显示,以详细模式运行时,fuser会提供有关USERPIDACCESSCOMMAND的信息。 ACCESS下的c字符表示访问类型,表示“当前目录”。 访问类型很多,例如e(正在运行的可执行文件),r(根目录),f(打开文件。在默认显示模式下省略f),F(用于写入的打开文件,在默认显示模式下省略F)和 m(mmap文件或共享库)。

查看使用你tcp或udp套接字的进程?

有时您需要使用TCP和UDP套接字查找进程。 为了查找这些进程,需要使用-n选项。 -n选项用于选择相应的名称空间。

[root@huidukongjian-h4 docker]# fuser -v -n tcp 80
      USER  PID ACCESS COMMAND
80/tcp:    root  27411 F.... docker-proxy

默认情况下,fuser将同时在IPv6和IPv4套接字中查找,但是可以使用-4-6选项更改默认选项。 -4选项代表IPv4-6选项代表IPv6。 请注意,fuser仅将PID输出到stdout,其他所有内容都发送到stderr。

fuser -v -n tcp 80命令的结果显示,使用docker的进程的进程ID为27411,而用于启动该进程的命令为docker-proxy。 进程ID(PID)可以以多种方式使用,其中之一是进程终止。 与PID一起使用时,kill命令根据该进程ID终止进程。 fuser还可用于终止访问特定文件的进程。 在以下命令中,-k选项用于终止正在使用在端口123上运行的tcp侦听器的进程。为确保用户不会杀死错误的进程,使用-i选项询问用户是否 在终止进程之前进行确认。

fuser -k  123/tcp

使用带有-i选项的fuser -k命令在终止进程之前要求用户进行确认。 用户可以用y回答“是”,或者用N回答不杀死进程。

fuser -i -k 123/tcp
123/tcp:    12216
Kill process 12216 ? (y/N)
Use The -6 Option To Look For IPv6 Sockets.

以下命令以详细模式使用fuser,并尝试查找在端口123上运行的IPv6套接字。

fuser -v -n tcp -6 123

查找占用某个文件系统的进程

-m选项可与fuser命令一起使用,以查找访问文件文件系统上文件的进程。 此选项需要文件名作为输入参数。 -m选项非常有用,尤其是当用于发现正在访问文件系统的进程并标识要杀死的进程时。

以下命令显示所有访问“ example.txt”所在的文件系统的进程。 仔细查看-m选项如何与fuser一起使用。

[root@huidukongjian-h4 docker]# fuser -v -m data/v2/config.json
      USER  PID ACCESS COMMAND
/root/docker-v2/data/v2/config.json:
      root  kernel mount /
      root   1 .rce. systemd
      root   2 .rc.. kthreadd
      root   3 .rc.. rcu_gp
      root   4 .rc.. rcu_par_gp
      root   6 .rc.. kworker/0:0H-kbl
      root   8 .rc.. mm_percpu_wq
      root   9 .rc.. ksoftirqd/0
      root   10 .rc.. rcu_sched
      root   11 .rc.. migration/0
      root   12 .rc.. watchdog/0
      root   13 .rc.. cpuhp/0
      root   16 .rc.. netns
      root   17 .rc.. kauditd
      root   18 .rc.. khungtaskd
      root   19 .rc.. oom_reaper
      root   20 .rc.. writeback
      root   21 .rc.. kcompactd0
      root   22 .rc.. ksmd
      root   23 .rc.. khugepaged
      root   24 .rc.. crypto
      root   25 .rc.. kintegrityd
      root   26 .rc.. kblockd
      root   27 .rc.. tpm_dev_wq
      root   28 .rc.. md
      root   29 .rc.. edac-poller
      root   30 .rc.. watchdogd
      root   42 .rc.. kswapd0
      root   93 .rc.. kthrotld
      root   94 .rc.. acpi_thermal_pm
      root   95 .rc.. kmpath_rdacd
      root   96 .rc.. kaluad
      root   97 .rc.. ipv6_addrconf
      root   98 .rc.. kstrp
      root  326 .rc.. scsi_eh_0
      root  327 .rc.. scsi_tmf_0
      root  329 .rc.. kworker/0:1H-kbl
      root  361 .rc.. ata_sff
      root  363 .rc.. scsi_eh_1
      root  365 .rc.. scsi_tmf_1
      root  366 .rc.. scsi_eh_2
      root  367 .rc.. scsi_tmf_2
      root  387 .rc.. xfsalloc
      root  390 .rc.. xfs_mru_cache
      root  391 .rc.. xfs-buf/vda1
      root  394 .rc.. xfs-data/vda1
      root  395 .rc.. xfs-conv/vda1
      root  396 .rc.. xfs-cil/vda1
      root  397 .rc.. xfs-reclaim/vda
      root  398 .rc.. xfs-log/vda1
      root  399 .rc.. xfs-eofblocks/v
      root  400 .rc.. xfsaild/vda1
      root  486 .rce. systemd-journal
      rpc   541 .rce. rpcbind
      root  543 Frce. auditd
      root  545 .rce. sedispatch
      root  558 .rc.. rpciod
      root  559 .rc.. kworker/u3:0
      root  561 .rc.. xprtiod
      root  582 Frce. sssd
      polkitd  585 .rce. polkitd
      root  589 .rce. rngd
      dbus  593 frce. dbus-daemon
      chrony  612 .rce. chronyd
      root  652 Frce. sssd_be
      root  668 Frce. sssd_nss
      root  671 .rc.. ttm_swap
      root  672 .rc.. nfit
      root  675 frce. systemd-logind
      root  683 Frce. gssproxy
      root  740 frce. NetworkManager
      root  743 Frce. tuned
      root  814 frce. systemd-udevd
      root  889 frce. sshd
      root  890 Frce. rsyslogd
      root  895 frce. agetty
      root  898 frce. crond
      root  899 frce. agetty
      root  21821 .rc.. kworker/u2:0-flu
      root  25475 frce. sshd
      root  25480 .rce. systemd
      root  25485 frce. (sd-pam
      root  25491 frce. sshd
      root  25492 frce. bash
      root  25705 Frce. containerd
      root  25706 Frce. dockerd
      root  26375 .rc.. kworker/u2:1-eve
      root  27251 Fr.e. containerd-shim
      root  27267 F...m v2
      root  27273 Fr.e. containerd-shim
      root  27295 ....m sh
      root  27400 .rce. docker-proxy
      root  27411 .rce. docker-proxy
      root  27416 Fr.e. containerd-shim
      root  27432 ....m sh
      root  27478 ....m sh
      root  27479 F...m nginx
      root  27480 ....m sleep
      (unknown) 27481 F...m nginx
      root  27561 ....m sleep
      root  27705 .rc.. kworker/0:0-xfs-
      root  27765 .rc.. kworker/0:1-xfs-
      root  27836 .rc.. kworker/0:2-even
      root  27860 frce. sshd
      root  27883 frce. sshd
      sshd  27884 frce. sshd

fuser还可用于将特定指令发送到某个进程。 当与-k选项一起使用时,fuser命令将KILL指令发送给进程。 有很多指令可以发送给运行中的进程,-l选项有助于查找可以与fuser一起使用的指令列表。

[root@huidukongjian-h4 docker]# fuser -l
HUP INT QUIT ILL TRAP ABRT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM STKFLT
CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH POLL PWR SYS

总结

到此这篇关于Linux系统使用Fuser命令的方法的文章就介绍到这了,更多相关Linux fuser命令内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Linux中fuser命令用法详解

    描述: fuser可以显示出当前哪个程序在使用磁盘上的某个文件.挂载点.甚至网络端口,并给出程序进程的详细信息. fuser显示使用指定文件或者文件系统的进程ID. 默认情况下每个文件名后面跟一个字母表示访问类型. 在zkfc的日志里面,有一个warn:PATH=$PATH:/sbin:/usr/sbin fuser -v -k -n tcp 8090 via ssh: bash: fuser: 未找到命令 原因是最小化安装centos的时候,没有fuser这个命令 yum install -y

  • Linux系统使用Fuser命令的方法

    什么是Fuser命令? fuser命令是一个非常聪明的unix实用程序,用于查找正在使用某个文件.目录或socket的进程. 它还提供有关拥有该进程的用户和访问类型的信息..fuser工具显示了使用指定文件或文件系统的每个进程的进程ID(PID). 安装 如果你的精简版运行fuser提示如下信息: -bash: fuser: command not found 请执行如下命令安装: [winbert@winbert-server ~]$ sudo yum -y install psmisc 如何

  • 通过 SSH 在远程 Linux 系统上运行命令的方法

    我们有时可能需要在远程机器上运行一些命令.如果只是偶尔进行的操作,要实现这个目的,可以登录到远程系统上直接执行命令.但是每次都这么做的话,就有点烦人了.既然如此,有没有摆脱这种麻烦操作的更佳方案? 是的,你可以从你本地系统上执行这些操作,而不用登录到远程系统上.这有什么好处吗?毫无疑问.这会为你节省很多好时光. 这是怎么实现的?SSH 允许你无需登录到远程计算机就可以在它上面运行命令. 通用语法如下所示: $ ssh [用户名]@[远程主机名或 IP] [命令或脚本] 1) 如何通过 SSH 在

  • PHP在linux上执行外部命令的方法

    目录: 一.PHP中调用外部命令介绍 二.关于安全问题 三.关于超时问题 四.关于PHP运行linux环境中命令出现的问题 一.PHP中调用外部命令介绍 在PHP中调用外部命令,可以用,1>调用专门函数.2>反引号.3>popen()函数打开进程,三种方法来实现: 方法一:用PHP提供的专门函数(四个): PHP提供4个专门的执行外部命令的函数:exec(), system(), passthru(), shell_exec() 1)exec() 原型: string exec ( st

  • Linux系统用户管理命令小结

    用户和组管理 1.用户/组基本概念 Users and groups: . Every process (running program) on the system runs as a particular user. . Every file is owned by a particular user. . Access to files and directories are restricted by user. . The user associated with a running

  • Linux系统下SystemC环境配置方法

    以下为centos7下配置方法 下载systemc源码包:SystemC (accellera.org) 将压缩包放置到用户目录下,并解压 tar -zxvf systemc-2.3.3.tar.gz 进入到systemc-2.3.3文件夹 cd systemc-2.3.3 新建临时文件夹tmp,并进入其中 mkdir tmpcd tmp 运行如下命令 ../configure make make install 至此,文件夹中生成include与lib-linux64两个文件夹 设置环境变量

  • 在linux系统下安装redis的方法

    去官网找到合适的版本,可以直接下载下来,再用fxp上传,也可以直接以下面这种方式下载: $ wget http://download.redis.io/releases/redis-3.2.9.tar.gz $ tar xzf redis-3.2.9.tar.gz $ cd redis-3.2.9 $ make 启动服务: $ src/redis-server 测试是否成功: $ src/redis-cli redis> set foo bar OK redis> get foo "

  • 在Linux中使用history命令的方法

    用强大的 history 命令使你的命令行提示符更有效率. 随着我在终端中花费越来越多的时间,我感觉就像在不断地寻找新的命令,以使我的日常任务更加高效.GNU 的 history 命令是一个真正改变我日常工作的命令. GNU history 命令保存了从该终端会话运行的所有其他命令的列表,然后允许你重放或者重用这些命令,而不用重新输入它们.如果你是一个老玩家,你知道 history 的力量,但对于我们这些半吊子或新手系统管理员来说, history 是一个立竿见影的生产力增益. 历史 101 要

  • Linux系统下netstat命令详细介绍

    目录 一.介绍 二.输出信息描述 三.netstat常见参数 四.netstat网络状态详解 Linux的相关keepalive参数 五.常用netstat相关命令 一.介绍 Netstat是控制台命令,是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表.实际的网络连接以及每一个网络接口设备的状态信息. Netstat用于显示与IP.TCP.UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况. 二.输出信息描述 执行netstat后输出如下: [root@sy-s

  • Linux系统下gcc命令使用详解

    目录 一.预处理 二. 编译 三.汇编 四.链接 1.gcc的安装(以Ubuntu为例) sudo apt-get install build-essential 安装完后可以通过 gcc --version 查看版本. 让我们在通过gcc编译可执行文件的过程中掌握其基础应用. 准备: 先在当前目录下 使用vim新建一个.c文件 例如 666.c $ vim 666.c (vim的使用可在我的另一篇博客有详细的叙述,这里不多在赘述) 插入一段代码. #include <stdio.h> mai

  • MySQL在Linux系统中隐藏命令行中的密码的方法

    在命令行中输入命令并不是一个好主意,会造成安全问题.但是如果你决定去写一个应用,而这个应用需要在命令行中使用密码或者其他敏感信息.那么,你能通过以下方法禁止系统的其他用户轻易的看到这些敏感数据 呢?,类似MySQL在ps命令下隐藏密码. 假设我这里系统里两个用户,一个是root ,一个是dabu .测试系统为centos 6.5在按照下面的步骤做: [root@dabu.info ~]#su dabu #切换到dabu这个账号 [dabu@dabu.info ~]$cd ~ #切换到dabu的h

随机推荐