取消掛載 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當前目錄為掛載點裡的某個目錄:
- # umount -v /mnt/mymount/
- umount: /mnt/mymount: device is busy
- umount: /mnt/mymount: device is busy
對付系統檔案正忙的另一種方法是執行延遲解除安裝:
# umount -vl /mnt/mymount/ 執行延遲解除安裝 |
延遲解除安裝(lazy unmount)會立即解除安裝目錄樹裡的檔案系統,等到裝置不再繁忙時才清理所有相關資源。解除安裝可移動儲存介質還可以用eject命令。下面這條命令會解除安裝CD並彈出CD:
# eject /dev/cdrom 解除安裝並彈出CD |