本文再也不更新,可能存在內容過期的狀況,實時更新請訪問原地址:Linux系統如何使用Fuser命令;linux
fuser命令是一個很是聰明的unix實用程序,用於查找正在使用某個文件、目錄或socket的進程。 它還提供有關擁有該進程的用戶和訪問類型的信息。。fuser工具顯示了使用指定文件或文件系統的每一個進程的進程ID(PID)。nginx
若是你的精簡版運行fuser提示以下信息:docker
-bash: fuser: command not found
請執行以下命令安裝:json
[winbert@winbert-server ~]$ sudo yum -y install psmisc
man命令可用於查看任何命令的幫助手冊,可是學習新知識(尤爲是linux命令)的最佳方法是經過閱讀真實的示例,而且不斷地在終端中鍵入命令。 在終端中運行如下命令,以獲取有關fuser實用程序的使用選項的信息。bash
[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選項用於在計算機屏幕上生成詳細輸出,所以用戶能夠實時查看實用程序正在執行的操做。ssh
[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文件或共享庫)。socket
有時您須要使用TCP和UDP套接字查找進程。 爲了查找這些進程,須要使用-n
選項。 -n
選項用於選擇相應的名稱空間。tcp
[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命令;