小知识: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实用程序的使用选项的信息。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
[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选项用于在计算机屏幕上生成详细输出,因此用户可以实时查看实用程序正在执行的操作。

?
1
2
3
[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选项用于选择相应的名称空间。

?
1
2
3
[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回答不杀死进程。

?
1
2
3
4
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一起使用。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
[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一起使用的指令列表。

?
1
2
3
[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命令内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://www.cnblogs.com/cobcmw/p/13205044.html

声明: 猿站网有关资源均来自网络搜集与网友提供,任何涉及商业盈利目的的均不得使用,否则产生的一切后果将由您自己承担! 本平台资源仅供个人学习交流、测试使用 所有内容请在下载后24小时内删除,制止非法恶意传播,不对任何下载或转载者造成的危害负任何法律责任!也请大家支持、购置正版! 。本站一律禁止以任何方式发布或转载任何违法的相关信息访客发现请向站长举报,会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。本网站的资源部分来源于网络,如有侵权烦请发送邮件至:2697268773@qq.com进行处理。
建站知识

小知识:备份和恢复Linux文件权限的方法

2023-5-9 8:18:23

建站知识

小知识:Linux中fuser命令用法详解

2023-5-9 8:34:58

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索