1. 程式人生 > >取消掛載 umount 時出現的 “Device is busy”

取消掛載 umount 時出現的 “Device is busy”

在 Linux 下 umount 掛載的優盤或者行動硬碟的時候,經常會出現 “Device is busy” 的提示,哦~真讓人惱火,在 Windows 下的那個無法解除安裝移動裝置的問題,竟然也竄到了 Linux 下 ……

其實,錯誤不在 WIndows 也不在 Linux,無法解除安裝移動裝置的原因,是因為系統中還有程式在霸佔著移動裝置上的檔案,如果冒然強制解除安裝,可能會導致資料丟失和裝置損壞,“Device is busy” 是一種保護措施。

方法一:

既然知道是有程式霸佔,找出這個程式再處理一下就好了。 fuser 這個小程式可以派上用場,基本上每個發行版都會帶有 fuser 這個工具。

fuser 可以顯示出當前哪個程式在使用磁碟上的某個檔案、掛載點、甚至網路埠,並給出程式程序的詳細資訊。

假設無法解除安裝的裝置為 /media/USB,執行下列命令即可:

$ fuser -m -v /media/USB/
                                   使用者     程序號 許可權   命令
/media/BAK/:         galeki      335    ..c..  gqview

-m 引數顯示所有使用指定檔案系統的程序,後面可以跟掛載點,或是dev裝置,-v 引數給出詳細的輸出,可以看出,原來是 gqview 這個程式還在霸佔著移動裝置,fuser 還給出了程式的程序號,知道了程序號,你就可以隨便怎麼處置這個程式了。

另外你也可以新增一個 -k 引數:

fuser -m -k /media/USB/

這招自動把霸佔著 /media/USB/ 的程式殺死。如果你不是很明確是否要殺死所有霸佔裝置的程式,你還可以加一個  -i 引數,這樣每殺死一個程式前,都會詢問:

$ fuser -m -v -i -k /media/BAK/
                                   使用者     程序號 許可權   命令
/media/BAK/:         galeki      371     ..c..   gqview

殺死程序 371 ? (y/N)

 很順利的解決了 “Device is busy” 的問題~

方法二:

使用umount命令可以解除安裝檔案系統。利用裝置名或掛載點都能umount檔案系統,不過最好還是通過掛載點解除安裝,以免使用繫結掛載(一個裝置,多個掛載點)時產生混亂。下面兩條命令分別通過裝置名和掛載點解除安裝檔案系統,同時輸出詳細資訊:

 1.# umount -v /dev/sda1          通過裝置名解除安裝 

2./dev/sda1 umounted 

3.# umount -v /mnt/mymount/      通過掛載點解除安裝 

4./tmp/diskboot.img umounted 
 如果裝置正忙,解除安裝即告失敗。解除安裝失敗的常見原因是,某個開啟的shell當前目錄為掛載點裡的某個目錄:

  1. # umount -v /mnt/mymount/  
  2. umount: /mnt/mymount: device is busy  
  3. umount: /mnt/mymount: device is busy 

對付系統檔案正忙的另一種方法是執行延遲解除安裝:

# umount -vl /mnt/mymount/     執行延遲解除安裝 

延遲解除安裝(lazy unmount)會立即解除安裝目錄樹裡的檔案系統,等到裝置不再繁忙時才清理所有相關資源。解除安裝可移動儲存介質還可以用eject命令。下面這條命令會解除安裝CD並彈出CD:

# eject /dev/cdrom      解除安裝並彈出CD