什么是Fuser命令?
fuser命令是一個非常聰明的unix實用程序,用于查找正在使用某個文件、目錄或socket的進程。 它還提供有關擁有該進程的用戶和訪問類型的信息。。fuser工具顯示了使用指定文件或文件系統(tǒng)的每個進程的進程ID(PID)。
安裝
如果你的精簡版運行fuser提示如下信息:
-bash: fuser: command not found
請執(zhí)行如下命令安裝:
[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選項用于在計算機屏幕上生成詳細輸出,因此用戶可以實時查看實用程序正在執(zhí)行的操作。
[winbert@winbert-server ~]$ fuser -v .
USER PID ACCESS COMMAND
/home/winbert: winbert 1435 ..c.. bash
上面的輸出顯示,以詳細模式運行時,fuser會提供有關USER
,PID
,ACCESS
和COMMAND
的信息。 ACCESS
下的c
字符表示訪問類型,表示“當前目錄”。 訪問類型很多,例如e(正在運行的可執(zhí)行文件),r(根目錄),f(打開文件。在默認顯示模式下省略f),F(xiàn)(用于寫入的打開文件,在默認顯示模式下省略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,其他所有內容都發(fā)送到stderr。
fuser -v -n tcp 80
命令的結果顯示,使用docker
的進程的進程ID為27411,而用于啟動該進程的命令為docker-proxy
。 進程ID(PID)可以以多種方式使用,其中之一是進程終止。 與PID一起使用時,kill命令根據(jù)該進程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
查找占用某個文件系統(tǒng)的進程
-m
選項可與fuser
命令一起使用,以查找訪問文件文件系統(tǒng)上文件的進程。 此選項需要文件名作為輸入?yún)?shù)。 -m
選項非常有用,尤其是當用于發(fā)現(xiàn)正在訪問文件系統(tǒng)的進程并標識要殺死的進程時。
以下命令顯示所有訪問“ example.txt”所在的文件系統(tǒng)的進程。 仔細查看-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
還可用于將特定指令發(fā)送到某個進程。 當與-k
選項一起使用時,fuser
命令將KILL
指令發(fā)送給進程。 有很多指令可以發(fā)送給運行中的進程,-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系統(tǒng)使用Fuser命令的方法的文章就介紹到這了,更多相關Linux fuser命令內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!