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

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 Intellij和Eclipse无法找到库工件   java Mapbox Android Symbolayer重置筛选器   java如何在顶部显示特定的recyclerview项?   java如何在Hibernate中使用@Qualifier   我想计算特定文本webdriver java在多个页面上可用的HTML表中的数据   java捕获Spring MVC REST服务抛出的Jersey REST客户端的异常   java Hibernate flush()影响事务   密钥绑定Java密钥绑定   sonarqube java,sonar,圈复杂度   使用3DES在Java中加密,在SQL Oracle中解密   regex正则表达式在regex101上工作。com,但不是prod   JAVAsql。SQLException:ORA00600:内部错误代码,参数:[12811],[93233]   java H2数据库存储在哪里?   java如何避免在使用Jackson时从JSON字符串反序列化空JSON数组元素