多次 chroot 后 umount /chrootedpath /dev/pts:目标正忙

多次 chroot 后 umount /chrootedpath /dev/pts:目标正忙

我一直在并行执行多个 chroot 环境,每个环境都在单独的文件夹中(当脚本chroot退出时,我有时会在同一文件夹中运行另一个环境),有一段时间它看起来很好。但现在我几乎没有/dev“主”系统(无法启动应用程序/打开新窗口等)。

我一直这样安装:

sudo mount -t proc proc $work_path/fin_sq/proc
sudo mount -t sysfs sys $work_path/fin_sq/sys
sudo mount -t devtmpfs devtmpfs $work_path/fin_sq/dev
sudo mount -t devpts devpts $work_path/fin_sq/dev/pts

退出后卸载chroot

umount "${work_path}"/fin_sq/dev/pts
umount "${work_path}"/fin_sq/dev
umount "${work_path}"/fin_sq/proc
umount "${work_path}"/fin_sq/sys

有时我会通过ctrl-c.对于脚本在存在先前运行残留的文件夹中运行的情况,脚本将被编码为卸载并删除先前的工作。

今天,我至少在一个终端窗口中看到target is busy我使用chroot.失败后,umount脚本删除了 chroot 系统的所有文件夹。对于未来,我认为如果其中一个卸载失败,我最好取消进一步的卸载/删除。

然而,您认为是什么可能导致这样的结果呢?如何调查?如何让系统进入工作状态?我暂时不会重新启动系统,希望能更深入地学习 Linux。 TIA

PS 完整脚本供感兴趣的人参考:脚本通过 chroot 运行其他脚本,搜索/dev/pts在代码中找到两行(mount/umount)。

“自然”lsof显示空输出,添加--force似乎没有什么区别。尝试的mount -t devpts devpts /dev结果是“devtmpfs 已安装在 one_of_chrooted_pa​​ths/dev 上”。

我读了umount:目标正忙,但问题是-o rbind,我安装时没有它。再次,它正在使用两个 chrooted,我增加到 3-4,然后有些东西坏了......

答案1

笔记:这个答案是我如何解决这个问题的,欢迎回答有关它如何发生的技术细节。

我发现有ps aux几个sudo chroot .../work5/进程分别具有TSs状态。

翻译:博士

另外,我在运行lsof另一个子文件夹时发现的其他几个进程chroot仍然安装在其中findmnt(不是我之前检查过的“${work_path}”/fin_sq/dev/pts)。在这些被终止之后(不容易,我发布了另一个相关问题:linux:kill -9进程仅在第二次尝试时成功),我能够卸载有问题的安装点。

之后我损坏了/dev,特别是/dev/null没有损坏special character,我修复了在谷歌上搜索我自己的答案的问题https://superuser.com/a/1767579/607929:

# mknod -m 666 /dev/null c 1 3 
# mknod -m 666 /dev/ptmx c 5 2

一切似乎都有效,但 INO 更难找到问题到底是如何开始的细节。看起来我已经清除了上一次运行脚本的终端输出,然后chroot再运行下一步。Ctrl-c几乎可以肯定是根本原因。我想知道为什么它以前多次中断而没有问题,但最近却导致如此“混乱”。

相关内容