安装后如何卸载“dev”?

安装后如何卸载“dev”?

看来我dev安装后无法卸载。我正在继续Ubuntu 18.04.2 LTS运行4.15.0-1052-aws

mkdir -p ~/jail/dev
pushd ~/jail
sudo mount --rbind /dev dev/
sudo umount  dev/
umount: /home/ubuntu/Code/conversations/jail/dev: target is busy.

有什么方法可以在不重新启动机器的情况下卸载它吗?

或者,有没有一种方法可以安装它以便更容易卸载?

更新:这是以下的输出lsof /home/ubuntu/Code/conversations/jail/dev

COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
kdevtmpfs  55 root  cwd    DIR    0,6     2980    2 dev
kdevtmpfs  55 root  rtd    DIR    0,6     2980    2 dev

答案1

mount --make-rslave dev/
umount -R dev/

为了安全起见,需要第一个命令。它将阻止第二个命令卸载目录中的子目录原来的 /dev目录。这是由于“安装传播”。

第二个命令递归地卸载整个树。dev/pts例如,这可以确保在尝试卸载之前先卸载dev/。这就是导致“目标正忙”错误的原因。


作为优化,您可以使用umount -l而不是umount -R.当拆卸整个绑定安装树时,这可能很有用。

绑定挂载上的“umount -R”需要花费不可忽略的时间,为什么?

但是,如果它们不只是绑定安装或虚拟文件系统,则需要小心。已打开文件的程序通常仍然能够访问它们。在他们关闭它们之前,文件系统仍然是打开的。但是,文件系统会立即“分离”。它不会再使命名空间变得混乱。它不会出现在findmnt等等。这意味着您无法轻松判断底层设备何时“可以安全删除”。

相关内容