umount - 卸载文件系统
概要
umount -a [-dflnrv] [-t fstype] [-O option...]
umount [-dflnrv] {directory|device}
umount -h|-V
描述
umount 命令从文件层次结构中分离指定的 文件系统。 通过指定文件系统挂载的目录来指定文件系统。 也可以通过提供文件系统所在的特殊设备来工作,但这已经过时,主要是因为如果该设备被挂载到多个目录中,它将会失败。
请注意,当文件系统“繁忙”时,无法卸载它 - 例如,当它有打开的文件时,或者当某个进程将其工作目录设置为该位置时,或者当其上的交换文件正在使用时。 罪魁祸首的进程甚至可能是 umount 本身 - 它打开 libc,而 libc 依次打开例如区域设置文件。 延迟卸载可以避免此问题,但它可能会引入其他问题。 请参见 --lazy 选项的说明。
选项
-a, --all
卸载 /proc/self/mountinfo(或过时的 /etc/mtab)中描述的所有文件系统,但不包括 proc、devfs、devpts、sysfs、rpc_pipefs 和 nfsd 文件系统。 此文件系统列表可以通过 --types umount 选项进行替换。
-A, --all-targets
卸载当前挂载命名空间中指定文件系统中的所有挂载点。 可以通过挂载点之一或设备名称(或 UUID 等)来指定文件系统。 当此选项与 --recursive 选项一起使用时,则递归卸载文件系统内的所有嵌套挂载。 此选项仅在 /etc/mtab 是指向 /proc/mounts 的符号链接的系统上受支持。
-c, --no-canonicalize
不要规范化路径。 路径规范化基于 stat(2) 和 readlink(2) 系统调用。 在某些情况下,这些系统调用可能会挂起(例如,如果 NFS 服务器不可用)。 必须与指向挂载点的规范路径一起使用此选项。
对于非 root 用户,umount 会静默地忽略此选项。
有关此选项的更多信息,请参见 mount(8) 手册页。 请注意,umount 不会将此选项传递给 /sbin/umount.type 辅助程序。
-d, --detach-loop
如果卸载的设备是环回设备,则释放此环回设备。 对于通过 mount(8) 初始化,此选项是不必要的,在这种情况下,“autoclear”功能默认启用。
--fake
导致执行所有操作,但不执行实际的系统调用或 umount 辅助程序;这会“模拟”卸载文件系统。 它可以用于从以前使用 -n 选项卸载的文件系统中删除 /etc/mtab 中的条目。
-f, --force
强制卸载(在无法访问的 NFS 系统的情况下)。
请注意,此选项不能保证 umount 命令不会挂起。 强烈建议使用不带符号链接的绝对路径,以避免在 umount 命令中对无法访问的 NFS 进行不必要的 [readlink]({filename}../../readlink)(2) 和 [stat]({filename}../../stat)(2) 系统调用。
-i, --internal-only
即使 /sbin/umount.filesystem 存在,也不要调用它。 默认情况下,如果存在这样的辅助程序,则会调用它。
-l, --lazy
延迟卸载。 现在将文件系统与文件层次结构分离,并在文件系统不再忙时尽快清理所有对此文件系统的引用。
如果您计划在不久的将来对网络文件系统或具有子挂载的本地文件系统使用此选项,则需要进行系统重启。 `umount -l` 的推荐用例是防止由于无法访问的网络共享(由于服务器关闭或网络分区)导致正常 `umount` 命令挂起,从而导致关机时出现问题。 无法重新挂载该共享。
-N, --namespace ns
在指定的挂载命名空间 ns 中执行 umount。 ns 可以是运行在该命名空间中的进程的 PID,也可以是表示该命名空间的特殊文件。
`umount` 在读取 `/etc/fstab`、写入 `/etc/mtab`(或写入 `/run/mount`)以及调用 `umount(2)` 系统调用时切换到命名空间,否则它在原始命名空间中运行。 这意味着目标挂载命名空间不需要包含执行 `umount(2)` 命令所需的任何库或其他要求。
有关更多信息,请参阅 `mount_namespaces(7)`。
-n, --no-mtab
在不写入 /etc/mtab 的情况下卸载。
-O, --test-opts option...
仅卸载在 /etc/fstab 中设置了指定选项的文件系统。 可以在逗号分隔的列表中指定多个选项。 每个选项都可以添加 no 前缀,以指示不对此选项执行任何操作。
-q, --quiet
禁止显示“未挂载”错误消息。
-R, --recursive
递归卸载每个指定的目录。 如果链中的任何 umount 操作因任何原因而失败,则每个目录的递归将停止。 挂载点之间的关系由 /proc/self/mountinfo 条目确定。 必须通过挂载点路径指定文件系统;不支持通过设备名称(或 UUID)进行递归卸载。 从 2.37 版本开始,它还会卸载所有覆盖的文件系统(更多在同一挂载点上的文件系统)。
-r, --read-only
如果卸载失败,则尝试以只读方式重新挂载文件系统。
-t, --types type...
指示应仅对指定类型的文件系统采取操作。 可以在逗号分隔的列表中指定多个类型。 可以使用 no 前缀来指示不对所有提到的类型执行任何操作。 请注意,umount 从内核(/proc/mounts)读取有关挂载的文件系统的信息,并且文件系统名称可能与 /etc/fstab 中使用的文件系统名称不同(例如,“nfs4”与“nfs”)。
-v, --verbose
详细模式。
-h, --help
显示帮助文本并退出。
-V, --version
显示版本并退出。
非超级用户卸载
通常,只有超级用户才能卸载文件系统。 但是,当 fstab 中的某一行包含 user 选项时,任何人都可以卸载相应的文件系统。 有关更多详细信息,请参阅 [mount]({filename}../../mount)(8) 手册页。
自 2.34 版本起,umount 命令也可用于对 FUSE 文件系统执行卸载操作,如果内核挂载表中包含用户的 ID。在这种情况下,无需使用 fstab 中的 user= 挂载选项。
自 2.35 版本起,当用户权限不足以满足内部 libmount 安全规则时,umount 命令不会退出。它会放弃 suid 权限,并作为普通非 root 用户继续执行。这可用于支持不需要 root 权限的用例(例如,FUSE 文件系统、用户命名空间等)。
循环设备
umount 命令将自动分离先前由 mount(8) 命令初始化的循环设备,而与 /etc/mtab 无关。
在这种情况下,该设备使用“autoclear”标志初始化(有关更多详细信息,请参阅 losetup(8) 的输出),否则需要使用 --detach-loop 选项或调用 losetup -d device。自 Linux 2.6.25 起支持 autoclear 功能。
请注意,自 Linux v3.7 内核开始使用“延迟设备销毁”。系统只是用 autoclear 标志标记循环设备,稍后再销毁它。如果需要等待循环设备的完全删除,请在 umount 之后调用 udevadm settle。
退出状态
umount 具有以下退出状态值(这些值可以使用 OR 运算符组合):
0 成功
1 不正确的调用或权限
2 系统错误(内存不足、无法 fork、没有更多循环设备)
4 内部挂载错误
8 用户中断
16 无法写入或锁定 /etc/mtab
32 挂载失败
64 某些 umount 操作成功
umount -a 命令返回 0(全部成功)、32(全部失败)或 64(部分成功,部分失败)。
126 无法执行外部 /sbin/umount.<type> 挂载助手程序(自 util-linux v2.41 起)
外部助手
外部卸载助手程序的语法为:
umount.suffix {directory|device} [-flnrv] [-N namespace] [-t type.subtype]
其中 suffix 是文件系统类型(或 mtab 文件中 uhelper= 或 helper= 标记中的值)。-t 选项可用于具有子类型支持的文件系统。例如:
umount.fuse -t fuse.sshfs
当普通用户需要能够卸载未在 /etc/fstab 中定义的挂载点时(例如,由 udisks(1) 挂载的设备),/etc/mtab 文件中可以出现 uhelper=something 标记(非特权助手)。
mtab 文件中的 helper=type 标记会将所有卸载请求重定向到 /sbin/umount.type 助手,而与 UID 无关。
请注意,/etc/mtab 当前已弃用,helper= 和其他用户空间挂载选项由 libmount 维护。
助手程序的退出状态值将作为 umount(8) 的退出状态返回。如果找到了挂载助手程序,但 execl() 失败,则使用值 126。
环境
LIBMOUNT_FSTAB=<path>
覆盖 fstab 文件的默认位置(对于 suid 进程将被忽略)
LIBMOUNT_DEBUG=all
启用 libmount 调试输出
文件
/etc/mtab
已挂载文件系统表(已弃用,通常由指向 /proc/mounts 的符号链接取代)
/etc/fstab
已知文件系统表
/proc/self/mountinfo
由内核生成的已挂载文件系统表
历史
umount 命令出现在 Version 6 AT&T UNIX 中。
参见
umount(2), losetup(8), mount_namespaces(7), mount(8)
报告错误
如需报告错误,请使用问题跟踪器 [https://github.com/util-linux/util-linux/issues]。
可用性
umount 命令是 util-linux 软件包的一部分,可以从 Linux 内核存档 [https://www.kernel.org/pub/linux/utils/util-linux/] 下载。