天天看點

linux中fuser用法詳解

fuser功能 

fuser 可以顯示出目前哪個程式在使用磁盤上的某個檔案、挂載點、甚至網絡端口,并給出程式程序的詳細資訊.  

fuser顯示使用指定檔案或者檔案系統的程序ID.預設情況下每個檔案名後面跟一個字母表示通路類型。  

通路類型如下:  

c 代表目前目錄  

e 将此檔案作為程式的可執行對象使用 

f 打開的檔案。預設不顯示。  

F 打開的檔案,用于寫操作。預設不顯示。  

r 根目錄。  

m 映射檔案或者共享庫。 

s 将此檔案作為共享庫(或其他可裝載對象)使用

當指定的檔案沒有被通路,或者出現錯誤的時候,fuser會傳回非零。  

為了檢視使用tcp和udp套接字的程序,需要-n選項并指定名稱空間。預設IpV4和IpV6都會顯示。套接字可以是本地的或者是遠端的端口,和遠端的位址。所有的域是可選的,但是其前面的','必須存在。如下:  

[lcl_port][,[rmt_host][,[rmt_port]]]  

對于ip位址和port,名稱和數字表示都可以使用。  

fuser隻把PID輸出到标準輸出,其他的都輸出到标準錯誤輸出。  

常用選項 

-a 顯示所有指令行中指定的檔案,預設情況下被通路的檔案才會被顯示。  

-c 和-m一樣,用于POSIX相容。  

-k 殺掉通路檔案的程序。如果沒有指定-signal就會發送SIGKILL信号。  

-i 殺掉程序之前詢問使用者,如果沒有-k這個選項會被忽略。  

-l 列出所有已知的信号名稱。  

-m name 指定一個挂載檔案系統上的檔案或者被挂載的塊裝置(名稱name)。這樣所有通路這個檔案或者檔案系統的程序都會被列出來。如果指定的是一個目錄會自動轉換成"name/",并使用所有挂載在那個目錄下面的檔案系統。  

-n space 指定一個不同的命名空間(space).這裡支援不同的空間檔案(檔案名,此處預設)、tcp(本地tcp端口)、udp(本地udp端口)。對于端口, 可以指定端口号或者名稱,如果不會引起歧義那麼可以使用簡單表示的形式,例如:name/space (即形如:80/tcp之類的表示)。  

-s 靜默模式,這時候-u,-v會被忽略。-a不能和-s一起使用。  

-signal 使用指定的信号,而不是用SIGKILL來殺掉程序。可以通過名稱或者号碼來表示信号(例如-HUP,-1),這個選項要和-k一起使用,否則會被忽略。  

-u 在每個PID後面添加程序擁有者的使用者名稱。  

-v 詳細模式。輸出似ps指令的輸出,包含PID,USER,COMMAND等許多域,如果是核心通路的那麼PID為kernel.  -V 輸出版本号。  

-4 使用IPV4套接字,不能和-6一起應用,隻在-n的tcp和udp的命名存在時不被忽略。  

-6 使用IPV6套接字,不能和-4一起應用,隻在-n的tcp和udp的命名存在時不被忽略。  

- 重置所有的選項,把信号設定為SIGKILL.  

使用示例

顯示使用某個檔案的程序資訊 

$ fuser -um /dev/sda2  

/dev/sda2:            6378c(quietheart)  6534c(quietheart)  6628(quietheart)  

6653c(quietheart)  7429c(quietheart)  7549c(quietheart)  7608c(quietheart)  

這個指令在umount的時候很有用,可以找到還有哪些用到這個裝置了。  

殺掉打開readme檔案的程式

$fuser -m -k -i readme  

這裡,會在kill之前詢問是否确定。最好加上-v以便知道将要殺那個程序。  

檢視那些程式使用tcp的80端口 

$fuser -v -n tcp 80  

$fuser -v 80/tcp  

fuser不同信号的應用 

用 -l參數可以列出fuser所知的信号

# 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

fuser可以發送它已知的信号給通路的指定檔案程序而代替-k參數預設發送的SIGKILL,例如:隻是挂起程序,那麼發送HUP信号就可以了

# fuser -v /root/install.log

                      使用者     程序号 權限   指令

 /root/install.log:   root       3347 f.... tail

 # fuser -k -SIGHUP /root/install.log

 /root/install.log:    3347

參考至:http://hi.baidu.com/bossyt/item/020e2cddf09463ee3cc2cb1a

              http://wenku.baidu.com/view/7e42df3667ec102de2bd8927.html

              http://blog.sina.com.cn/s/blog_59af21260100tv1m.html

本文轉自:http://czmmiao.iteye.com/blog/1733722 感謝原作者分享

宋興柱(Sindrol):轉載内容,請标明出處,謝謝!源文來自 寶貝雲知識分享:https://www.dearcloud.cn