看来我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
等等。这意味着您无法轻松判断底层设备何时“可以安全删除”。