我已经安装/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
Run Code Online (Sandbox Code Playgroud)
我读过fuser可以杀死访问挂载点的进程,但我想了解在这个简单的情况下发生了什么。根据lsof输出,是否使用挂载点作为当前工作目录(cwd)?
我不想使用懒惰卸载。
我有一个程序可以在磁盘上创建分区和文件系统。为了测试它,我创建了一个图像文件:
dd if=/dev/zero of=disk.img bs=1M count=100
Run Code Online (Sandbox Code Playgroud)
并安装:
sudo losetup /dev/loop0 disk.img
Run Code Online (Sandbox Code Playgroud)
分区过程似乎有效,我收到以下错误mkfs:
mkfs.vfat: unable to open /dev/loop0p2: No such file or directory
Run Code Online (Sandbox Code Playgroud)
我可以看到分区fdisk -l:
sudo fdisk -l /dev/loop0
Disk /dev/loop0: 1000 MiB, 1048576000 bytes, 2048000 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: B2CB131D-0091-4102-89E1-1D94EC49484A
Device Start End Sectors Size Type
/dev/loop0p1 2048 10239 …Run Code Online (Sandbox Code Playgroud) 我正在试验挂载命名空间。我有一个 python 脚本,它创建一个绑定挂载,然后是一个带有unshare系统调用的挂载命名空间。我打印 PID,并暂停脚本。我可以列出坐骑:
nsenter --mount=/proc/PID/ns/mnt
mount
Run Code Online (Sandbox Code Playgroud)
在调用之前让 python 进程被中断umount(或者让我们说它由于某些错误而终止)。现在/proc/PID消失了。系统会处于一致状态吗?我的意思是会umount被自动调用,还是会以其他方式“清理”坐骑?