本文不再更新, 可能存在内容过时的情况, 实时更新请访问原地址: 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 会提供有关 USER,PID,ACCESS 和 COMMAND 的信息. 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 命令;
来源: https://www.cnblogs.com/cobcmw/p/13205044.html