GNU Shepherd,由 Guix 开发的服务管理器

历经两年最后一个大版本的形成, 在他发布发布时宣布 新版服务管理器 GNU 牧羊人 0.9 (以前称为 dmd),这是 由 GNU Guix 发行版的开发者开发 作为系统依赖感知 SysV-init 初始化的替代方案。

牧羊人 以服务的形式异步提供用户空间功能,在 Shepherd 中是通用函数和对象数据类型,它们被导出以供 Shepherd 使用,以某种定义的方式扩展基本操作系统。 与 systemd 不同,用户空间监视进程以该用户身份运行。

关于牧羊人

用户空间初始化的 Shepherd 模型的核心是扩展的概念,这是一种可组合性形式,其中服务旨在覆盖其他服务,并根据需要使用更精细或更专业的行为来增强它们。 这表达了在许多现代引导系统中发现的基于实例化的依赖关系,它 使系统模块化,但也允许服务之间进行可变交互 随意服务。

牧羊人 还提供所谓的虚拟服务 允许对一类相关服务对象进行动态调度,例如那些为系统实例化邮件传输代理 (MTA) 的服务对象。

由 Shepherd 守护进程管理的系统可以将其用户空间表示为有向无环图,其中“系统服务”(负责早期引导和启动阶段)作为根,所有后续初始化的服务作为系统服务功能的扩展,直接或通过其他服务传递。

在 Guile Scheme 中编写和配置, GNU Shepherd 被设计成高度可编程的 由系统管理员提供,但也可用于管理非特权守护程序和服务的每个用户配置文件。

您的服务和设置统一存储为方案代码 面向对象,虽然基本的 Guix 系统提供了一组核心服务,但可以灵活地声明任意新服务,通过 Guile 的对象系统 GOOPS,用户可以通过询问 Shepherd 动态重写服务来重新定义现有服务实例化的具体方法。

GNU Shepherd 最初是为与 GNU Hurd 一起工作而设计的,后来被 Guix 系统采用。

GNU Shepherd 0.9 的主要新特性

在展示的这个新版本中,强调了 实施临时服务的概念 (transient),由于进程终止或“stop”方法调用而终止后自动断开,对于终止后无法重新启动的合成服务可能需要。

另一个突出的变化是 对于没有 ""#:log-file" 参数的服务, 提供到 syslog 的输出 对于带有“#:log-file”参数的服务,日志被写入一个单独的文件中,该文件指示存储在 $XDG_DATA_DIR 目录中的非特权 Shepherd 进程中的日志时间。

此外,值得注意的是,添加了“make-inetd-constructor”程序来创建类似于inetd的服务,并添加了“make-systemd-constructor”程序来创建在网络活动中激活的服务(样式systemd socket激活)。

其他变化 从这个新版本中脱颖而出:

  • 添加了启动后台服务的过程:
  • 在“make-forkexec-constructor”过程中添加了“:supplementary-groups”、“#:create-session”和“#:resource-limits”参数。
  • 等待 PID 文件时保证无锁操作。
  • 删除了对使用 Guile 2.0 进行编译的支持。 修复了使用 Guile 版本 3.0.5-3.0.7 时的问题。
  • 现在需要使用 Fibers library 1.1.0 或更高版本。
  • 改进的文档和示例
  • 牧羊犬不能再用 Guile 2.0 建造
  • 修复 Guile 3.0 编译器错误。[5-7]
  • 更新的翻译

最后 如果您有兴趣了解更多信息 或者您想获得这个新版本,您可以查阅详细信息、文档并从 以下链接。


发表您的评论

您的电子邮件地址将不会被发表。 必填字段标有 *

*

*

  1. 负责数据:MiguelÁngelGatón
  2. 数据用途:控制垃圾邮件,注释管理。
  3. 合法性:您的同意
  4. 数据通讯:除非有法律义务,否则不会将数据传达给第三方。
  5. 数据存储:Occentus Networks(EU)托管的数据库
  6. 权利:您可以随时限制,恢复和删除您的信息。