close

fuser 這指令, 乍看之下都會讓人解讀為 "fuse --保險絲 " , 但在Linux中, 應該是解釋為 File using

什麼時後會用到fuser這指令呢, 大體是你想知道有那一個程序 , 正使用著系統的某些接口. 像是那一個網路介面 , 或是那一個檔案系統掛載等.  由其是當我們想卸載某一檔案系統 , 如 umount /dev/win_d ,  卻一直出現 "Device is Busy" 的訊息, 就可以使用 fuser , 把正佔住該資源的程序給找出來.

例如

#fuser -m -v /mnt/win_d       會出現
 
                      USER       PID    .... COMMAND
/mnt/win_d    root        4154       bash

也就是說 ,  有一隻編號4154的bash 程序 , 正在access著/mnt/win_d

其中下的參數 :
-m 參數顯示所有使用指定文件系統的進程,後面可以跟掛載點,或是dev設備( Thanks lisir :),-v參數給出詳細的輸出


當然啦 , 問題一定是要解決的 , 如果是剛好有程序在使用 , 可以關掉就算了. 偏偏有的是錯誤的程序 , 卻關不掉. 這時就得把它給kill 了, fuser裏也安排了這樣的參數命令
fuser -m -k /mnt/win_D

這招自動把霸佔著/mnt/win_d的程序殺死。如果你不是很明確是否要殺死所有霸佔設備的程序,你還可以加一個-i 參數,這樣每殺死一個程序前,都會詢問:
# fuser -m -v -i -k /mnt/win_d

                      USER       PID    .... COMMAND
/mnt/win_d    root        4154       bash
kill process 4154? (y/N)

當你選Y時 , 那佔住的程序(pid) , 就會被刪掉了. /mnt/win_d , 也將會被釋放.

arrow
arrow
    全站熱搜

    jslinux 發表在 痞客邦 留言(0) 人氣()