我已经创建了一个包含rpm和yum (centos 7.5)的根监狱来在原始系统上安装一些软件。
umount: /rootJail/originalRoot: target很忙。(在某些情况下,使用设备的进程的有用信息由lsof(8)或fuser(1)找到)
因此,我基本上可以卸载所有东西,除了原始系统本身的根。我需要这样做才能移除根监狱,这是强制性的。
问题是,在根监狱中安装了软件之后,启动了许多进程。这就是为什么它告诉我目标很忙。杀死所有这些进程是不可能的,因为这也会杀死系统。这些进程似乎被绑定到rootJail,而不是真正的系统,即使安装路径正确。而且,在重新启动之后,所有操作都很完美(最糟糕的情况是:删除这里的文件夹)
我已经试着做一个懒散的卸载,这基本上是可行的。我可以删除rootJail,它似乎不会损害安装在内部的原始系统。
我的问题是:这样做安全吗?或者对于如何卸载该文件夹还有其他解决方案吗?
发布于 2018-06-27 10:51:30
因此,您似乎希望这些进程无限期地继续运行,即它们是服务进程-它们是在嵌套chroot环境中启动的。这表明您是从shell生成服务流程,而不是从systemd生成服务流程。
一般来说,这是不好的,你会想要避免它。
CentOS 7使用systemd,作为PID 1运行,并管理系统服务。很明显,主系统的PID 1没有在你的色度中运行。通常,当您请求系统服务进程的启动时,它会从PID 1中分离出来,以提供一个干净的环境(根据相关的.service单元文件定制)。(这包括遗留的sysvinit脚本。它们被导入自动生成的.service文件中)。
(为了进一步说明这一点:从技术上讲,可以运行绑定到套接字中的chroot,以便与systemd通信,并使用chroot内部的命令来操作主机系统的服务)。
问题不只是您的方法失去了systemd的好处。这意味着您混淆了systemd服务,如果有这个守护进程的话。例如,服务可能显示为not (service foo status)。如果你以后试着service foo restart..。systemd将不知道有一个守护进程要停止,它将尝试启动守护进程的第二个实例。这是一个有点混乱的调试!通常,您会得到一个很好的即时错误,即无法启动您的web服务器,因为已经有另一个程序在监听TCP端口80 :),但在其他情况下,您可能会得到两个不同的守护进程实例,认为它们应该是唯一的实例,导致错误需要更长时间才能被注意到。
https://unix.stackexchange.com/questions/451918
复制相似问题