在serverfault 上被问到但没有得到足够的关注,所以在这里重新发布,希望这里的一些人知道答案。
还有另一个问题在讨论卸载 rbind 挂载,但该解决方案有不良影响。考虑以下目录布局:
.
??? A_dir
? ??? mount_b
??? B_dir
? ??? mount_c
??? C_dir
Run Code Online (Sandbox Code Playgroud)
现在我绑定C_dir到B_dir/mount_c和 rbindB_dir到A_dir/mount_b:
[hidden]$ sudo mount --bind C_dir B_dir/mount_c
[hidden]$ sudo mount --rbind B_dir A_dir/mount_b
[hidden]$ mount | grep _dir | wc -l
3
Run Code Online (Sandbox Code Playgroud)
现在umount A_dir/mount_b会失败,这并不奇怪。根据网络上随处可见的答案,我们需要umount A_dir/mount_b/mount_c先然后umount A_dir/mount_b。但是,umount A_dir/mount_b/mount_c也会 unmount B_dir/mount_c,这是不需要的:
[hidden]$ sudo umount A_dir/mount_b/mount_c
[hidden]$ mount | grep _dir | wc …Run Code Online (Sandbox Code Playgroud) 看来我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)