1. 程式人生 > >【Linux工具系列】fuser的使用

【Linux工具系列】fuser的使用

fuser – identify processes using files or sockets

1.查詢目錄或檔案的使用者

可以查詢某個目錄或檔案是否被使用,被那個程序使用。

例如umount的時候,碰到裝置忙的情況

alexsvr:/export/home # umount /home/
umount: /home: device is busy
umount: /home: device is busy

可以用下面的命令查詢是那個程序在使用這個目錄:

alexsvr:/home # fuser /home/
/home/:       16380c

根據PID,查詢進行名稱。 其實 Linux下,找到PID後,要殺要剮就隨你便了。

alexsvr:/home # ps -ef|grep 16380
root     16380 16377  0 May10 pts/2    00:00:00 -bash

程序後的字母表明程序訪問目錄或檔案的型別:
c      current directory.

e      executable being run.

f      open file. f is omitted in default display mode.

F      open file for writing. F is omitted in default display mode.

r      root directory.

m      mmap’ed file or shared library.

其實,直接使用-v引數就可以顯示更詳細的資訊:

alexsvr:/home # fuser -v /home/

USER        PID ACCESS COMMAND
/home/:       root      16380 ..c.. bash

2.查詢埠使用程序

alexsvr:/home # fuser -v -n tcp 22

USER        PID ACCESS COMMAND
22/tcp:              root      12319 F…. sshd

3.查詢檔案系統使用程序

alexsvr:/home # fuser -m /home/
/home/:       16380c

4.關閉程序

alexsvr:/home # fuser -v -k 程序名

fuser可以傳送如下的訊號:

alexsvr:/home # fuser -l
HUP INT QUIT ILL TRAP ABRT IOT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM
STKFLT CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH IO PWR SYS
UNUSED

kill的時候加上-i引數,則在殺死程序前需要進行確認。