我已经安装/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)?
我不想使用惰性卸载。
您曾经
rbind
挂载文件系统和子挂载。为了卸载一个文件系统,你必须先卸载它的子挂载(递归地卸载它们的子挂载)。但请注意!如果没有第一个命令,由于挂载传播,您可能会卸载source上的所有子挂载。在这种情况下,这意味着 的所有子挂载
/dev
,这将对您正在运行的系统产生不良影响;-)。基本上,安装传播是一个巨大的陷阱,等着你掉进去:-)。如果绑定安装默认禁用它似乎会更好。
kdevtmpfs
是维护 devtmpfs 的内核线程。它不会阻止卸载 devtmpfs。这是因为内核线程在单独的挂载上运行(如绑定挂载)。你看不到原来的坐骑;它位于单独的挂载命名空间中。如果您想尝试找出kdevtmpfs
出现在 中的原因lsof
,我不知道,也许可以考虑这是一个单独的问题。