Umount

此頁由 Linux Wiki使用者Chenxing 於 2012年6月23日 (星期六) 01:23 的最後更改。

出自Linux Wiki

提示:此文已超过 12 年(4569 天)未更新,如发现内容过时或有误,欢迎改进:)

umount是功能與mount相反的Linux命令,用於卸載文件系統。如卸載U盤,移動硬碟上的分區等等。

umount的man pages中有對其功能的大體介紹和詳細的參數使用說明,這裡只介紹umount的常見用法。

目錄

卸載文件系統

無程序訪問要卸載的分區時,可直接用設備名或掛載點卸載文件系統,如:

# umount /dev/sdb1
# umount /media/disk

設備忙

如果分區正在被使用,umount會報錯:

umount: /dev/sdb1: device is busy

此時可使用lsof命令打開正在使用該文件系統的進程,如:

lsof /dev/sdb1

再按需操作相關進程即可。

fuserlsof類似,另外提供向相關進程發送信號等功能。基本用法:

Note.gif
注意:
fuser與lsof不同的是,fuser只支持尋找正在訪問某文件夾的進程,而不能得到正在訪問某設備的進程。
# 获取正在访问某文件的进程和访问方式:
fuser /media/disk
 
# 更详细的信息:
fuser -l /media/disk
 
# 向正访问 /media/disk 的进程发送 SIGKILL 信号:
fuser -k /media/disk

lazy umount

lazy umount正是針對上面錯誤中的busy而提出的,即可以卸載「busy」的文件系統。

舉個例子,假設/dev/sdb1被mount到/media/disk,且處於「busy」狀態,那麼可以執行:

# umount -l /media/disk

請注意,該方法並不是完全安全的,lazy umount主要完成如下操作[1]

  1. 立即從目錄結構中實現卸載,即新進程將無法通過/media/disk訪問/dev/sdb1
  2. 正在訪問該文件系統的程序不受影響。即正在操作/media/disk的進程不會被打斷,且仍可以讀寫/dev/sdb1中的所有文件。
  3. 如果所有進程對/media/disk的操作都執行完,那麼才真正地umount

由此可知,lazy umount並沒有真正實現umount,僅用於特殊需要的情況,而用這種方法來卸載U盤是不安全的。

參考資料

  1. http://aplawrence.com/Linux/lazy-unmount.html

本文对您有帮助?分享给更多朋友!

反馈与讨论

发现文档不全面、有错误却没时间编辑文档?想分享自己的经验或见解?欢迎在此留言、讨论。
简体繁体转换