处理有系统的雨刷机的方便代码

nspawn-tools的Python项目详细描述


nsPawn工具

这是一个小项目,旨在为与 系统的雨刷机。目前,它包含两个程序。他们的 功能描述如下。它还包含一些相关的库 可用于其他目的的代码。这些设计是为了 使用使用初始化系统(如runit或s6 overlay)的计算机 (也可能是systemd,具体取决于程序)。

这个项目是免费软件:您可以在 GNU通用公共许可第3版的条款 软件基础当前没有其他版本适用于此项目。这个 项目分发时不作任何保证。请参阅license.txt以获取 许可证的全文。

n按回车键

这是util linux包中nsenter实用程序的包装。没有 这就需要手动计算出leader进程的pid 是,然后手动运行nsenter并记住确保 输入领导进程正在运行的所有相同命名空间。

要使用nspawn enter,请按如下方式运行:

nspawn-enter mymachinename

可以避免输入leader进程的某些名称空间。你可以 传递–no network标志以避免输入网络名称空间。你可以通过 –no pid标志以避免输入pid名称空间。我加了这些来帮助 调试容器中的问题(特别是网络问题)。它可以 也可以帮助安装软件包。因此,这些标志不是 通用。如果有人想提供一个补丁,使这个通用的 nsenter支持的命名空间标志,我很乐意考虑。

n黎明停止

设置systemd nspawn容器时遇到的问题之一 使用非systemd的init系统运行会使计算机关闭 作为系统服务单元运行时完全关闭。最初,我排除了 运行systemd nspawn时的–keep unit标志位于 单位,并使用“machinectl kill mymachinename–kill who=leader”作为 执行停止线。不幸的是,这仍然导致了不公平的终止 在容器中的所有进程中。

由于machinectl在 领导程序实际上已经终止。相反,“machinectl kill”命令 (默认情况下)只需将sigterm信号发送给leader进程,然后 立即退出。StReD会看到ExcSTOP命令已经退出,并且 容器中仍有进程在运行,并将其杀死 为了完成它的工作。

nspawn stop通过计算领导者流程来解决这个问题, 调用“machinectl kill”本身,然后等待引导进程 在退出前实际上终止。用这个作为execstop 相关服务单元的程序,它给出了 容器有足够的时间完全关闭。

要使用nspawn stop,请按如下方式运行:

nspawn-stop mymachinename

可以调整nspawn stop等待 通过传递–timeout标志来终止leader进程:

nspawn-stop mymachinename –timeout 10

默认超时为60秒。注意nspawn stop不会杀死 容器内部的进程。如果超时过期并且 仍在容器中运行的进程,由调用方终止 他们当用作nspawn计算机的execstop程序时,调用方是 systemd,它将杀死这些剩余的进程(如上所述)。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java运行时异常:com。安卓建设者德兴。DexArchiveMergerException:无法合并dex   java UDP如何获取传入数据报的目标地址   java如何将一些内容保存到列中并将其读回对象   属性类Java   java如何将二进制数据附加到HSQL(2.3.2)blob中?   试图在Maven项目中使用OpenJPA连接到Derby数据库,但出现“java.sql.SQLException”错误。   java(JavaFX)如何将类的实例传递给FXML控制器而不知道该控制器的名称?   sql为什么单线程使我的Java程序更快?   在单独的窗口上显示控制台输出[java]   java在Hadoop集群之外从Eclipse访问HDFS   java在我的类中初始化以下实例的最佳方法是什么?   java类单例或组件。它必须从不同的地方调用   java如何将配置文件自动下载到项目的根目录?