看来我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.
Run Code Online (Sandbox Code Playgroud)
有什么方法可以在不重新启动机器的情况下卸载它吗?
或者,有没有一种方法可以安装它以便更容易卸载?
更新:这是以下的输出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
Run Code Online (Sandbox Code Playgroud)
sou*_*edi 11
mount --make-rslave dev/
umount -R dev/
Run Code Online (Sandbox Code Playgroud)
为了安全起见,需要第一个命令。它将阻止第二个命令卸载原始 /dev目录中的子目录。这是由于“安装传播”。
第二个命令递归地卸载整个树。dev/pts例如,这可以确保在尝试卸载之前先卸载dev/。这就是导致“目标正忙”错误的原因。
作为优化,您可以使用umount -l而不是umount -R. 当拆卸整个绑定安装树时,这可能很有用。
绑定挂载上的“umount -R”需要花费不可忽略的时间,为什么?
但是,如果它们不只是绑定安装或虚拟文件系统,则需要小心。已打开文件的程序通常仍然能够访问它们。在他们关闭它们之前,文件系统仍然是打开的。但是,文件系统会立即“分离”。它不会再使命名空间变得混乱。它不会出现在findmnt等等。这意味着您无法轻松判断底层设备何时“可以安全删除”。