在 Linux 下 umount 掛載的優(yōu)盤(pán)或者移動(dòng)硬盤(pán)的時(shí)候,經(jīng)常會(huì)出現(xiàn) “Device is busy” 的提示,哦~真讓人惱火,在 Windows 下的那個(gè)無(wú)法卸載移動(dòng)設(shè)備的問(wèn)題,竟然也竄到了 Linux 下 ……
其實(shí),錯(cuò)誤不在 WIndows 也不在 Linux,無(wú)法卸載移動(dòng)設(shè)備的原因,是因?yàn)橄到y(tǒng)中還有程序在霸占著移動(dòng)設(shè)備上的文件,如果冒然強(qiáng)制卸載,可能會(huì)導(dǎo)致數(shù)據(jù)丟失和設(shè)備損壞,“Device is busy” 是一種保護(hù)措施。
既然知道是有程序霸占,找出這個(gè)程序再處理一下就好了。 fuser 這個(gè)小程序可以派上用場(chǎng),基本上每個(gè)發(fā)行版都會(huì)帶有 fuser 這個(gè)工具。
fuser 可以顯示出當(dāng)前哪個(gè)程序在使用磁盤(pán)上的某個(gè)文件、掛載點(diǎn)、甚至網(wǎng)絡(luò)端口,并給出程序進(jìn)程的詳細(xì)信息。
假設(shè)無(wú)法卸載的設(shè)備為 /media/USB,運(yùn)行下列命令即可:
$ fuser -m -v /media/USB/
用戶 進(jìn)程號(hào) 權(quán)限 命令
/media/BAK/: galeki 335 ..c.. gqview
-m 參數(shù)表明指定的路徑是一個(gè)掛載點(diǎn)顯示所有使用指定文件系統(tǒng)的進(jìn)程,后面可以跟掛載點(diǎn),或是dev設(shè)備 ( Thanks lisir :),-v 參數(shù)給出詳細(xì)的輸出,可以看出,原來(lái)是 gqview 這個(gè)程序還在霸占著移動(dòng)設(shè)備,fuser 還給出了程序的進(jìn)程號(hào),知道了進(jìn)程號(hào),你就可以隨便怎么處置這個(gè)程序了。
另外你也可以添加一個(gè) -k 參數(shù):
fuser -m -k /media/USB/
這招自動(dòng)把霸占著 /media/USB/ 的程序殺死。如果你不是很明確是否要?dú)⑺浪邪哉荚O(shè)備的程序,你還可以加一個(gè) -i 參數(shù),這樣每殺死一個(gè)程序前,都會(huì)詢問(wèn):
$ fuser -m -v -i -k /media/BAK/
用戶 進(jìn)程號(hào) 權(quán)限 命令
/media/BAK/: galeki 371 ..c.. gqview
殺死進(jìn)程 371 ? (y/N)
很順利的解決了 “Device is busy” 的問(wèn)題~