卸載磁盤時報錯:'Umount Target is Busy'
在 Linux 命令行中卸載磁盤并不復(fù)雜,只需要執(zhí)行 umount 命令即可:
但有時候可能會遇到報錯信息,比如:umount: target is busy
那么該怎樣解決這個問題呢?
在介紹如何解決問題之前,我們先來了解一下產(chǎn)生這個問題的原因。
Umount target is busy 錯誤產(chǎn)生的原因
原因很簡單,要卸載的目標設(shè)備還仍在使用中。
如果有足夠的權(quán)限,任何進程都可能正在使用你即將要卸載的驅(qū)動器。為了防止數(shù)據(jù)丟失,所以系統(tǒng)內(nèi)核不允許你將其卸載。
那么怎么解決這個問題呢?
提示:如果后臺正在進行數(shù)據(jù)傳輸,可能會因為強制卸載驅(qū)動器而造成數(shù)據(jù)丟失。
基于某種原因,有時候我們需要強制卸載驅(qū)動器。比如因某種原因造成的驅(qū)動器沒有相應(yīng)。強制卸載驅(qū)動器有多種方法,比如:
- 殺掉進程;
- 使用強制卸載(force unmount)
- 使用延遲卸載(lazy unmount)
我們先來看看第一種方法。
方法1:通過殺掉進程來強制卸載驅(qū)動器
這應(yīng)該是強制卸載磁盤驅(qū)動器的最佳方式,因為不管怎樣,你都會殺掉這個進程。
首先第一步是要找到造成該問題的??進程的 PID????梢允褂?lsof 命令,如下所示:
找到 pid 后,要??終止這個進程??就很簡單了:
終止進程后,再次執(zhí)行磁盤驅(qū)動器 umount 命令就可以了:
方法2:強制卸載(適用于網(wǎng)絡(luò)文件系統(tǒng) Network file systems)
當處理網(wǎng)路文件系統(tǒng)的時候,強制卸載是遇到 'umount: target is busy' 問題時首選的方法。但是對于本地文件系統(tǒng),其結(jié)果可能會不一樣。
強制卸載磁盤,可以使用 umount 命令的 -f 選項,如下所示:
方法3:使用延遲卸載(lazy unmount)
該方法不會立刻卸載目標,而只是將其從命名空間中刪除掉。當目標驅(qū)動器不被使用的時候,再將其卸載掉。使用這個方法,你可能無法確定目標是否已經(jīng)被卸載掉,這就像薛定諤的卸載。我們之所以介紹這種方法,是因為它是最柔和(無害)的一種方法。
使用延遲卸載,可以在 umount 命令中添加 -l 選項,如下所示:
上述我們介紹的三種方法中,我更傾向于使用第一種方法,即直接殺掉占用磁盤的進程。當然大家可以根據(jù)各自實際情況選擇合適的方法。