本文不再更新,可能存在內容過時的情況,實時更新請訪問原地址: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命令;