umount:目标正忙


8

我已经安装/dev并立即尝试卸载:

$ sudo mount -o rbind /dev m
$ sudo umount m
umount: /tmp/m: target is busy.
$ sudo lsof m
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
      Output information may be incomplete.
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
kdevtmpfs  55 root  cwd    DIR    0,6     4420    2 m
kdevtmpfs  55 root  rtd    DIR    0,6     4420    2 m

我读过fuser这篇文章可以杀死访问挂载点的进程,但是我想了解在这种简单情况下发生了什么。根据lsof输出,是否有将挂载点用作当前工作目录(cwd)的东西?

我不想使用懒惰卸载。

Answers:


11

您曾经rbind挂载文件系统和子挂载。为了卸载文件系统,必须先卸载其子装载(递归地卸载其子装载)。但是要小心!

mount --make-rslave m
umount -R m

如果没有第一条命令,由于安装传播,您可能会卸下上的所有子安装。在这种情况下,这意味着的所有子安装/dev都将对您正在运行的系统产生不利影响;-)。

基本上,坐骑传播是一个巨大的陷阱,等待您陷入陷阱:-)。如果默认情况下绑定绑定禁用它似乎会更好。


kdevtmpfs是维护devtmpfs的内核线程。它不会阻止卸载devtmpfs。这是因为内核线程在单独的挂载(例如绑定挂载)上运行。您看不到原始的安装架;它在单独的安装名称空间中。如果您想尝试找出为什么会kdevtmpfs出现在中lsof,我不知道,也许可以考虑将其作为一个单独的问题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.