GNU Shepherd 0.9 初始化系统发布

在最后一个重要版本形成两年后,服务管理器 GNU Shepherd 0.9(以前的 dmd)发布了,它是由 GNU Guix System 发行版的开发人员开发的,作为支持依赖关系的 SysV-init 初始化系统的替代方案。 Shepherd 控制守护进程和实用程序是用 Guile 语言(Scheme 语言的实现之一)编写的,它也用于定义启动服务的设置和参数。 Shepherd 已经在 GuixSD GNU/Linux 发行版中使用,并且也旨在在 GNU/Hurd 中使用,但可以在任何支持 Guile 语言的 POSIX 兼容操作系统上运行。

Shepherd 通过考虑服务之间的关系,动态识别和启动所选服务所依赖的服务来完成启动和停止服务的工作。 Shepherd 还支持检测服务之间的冲突并防止它们同时运行。 该项目既可以用作主初始化系统(PID为1的init),也可以以单独的形式管理各个用户的后台进程(例如,运行tor、privoxy、mcron等)并具有执行权限这些用户。

主要创新:

  • 实现了临时服务(transient)的概念,完成后由于进程终止或调用“stop”方法而自动禁用,这可能是关闭后无法重新启动的合成服务所需要的。
  • 为了创建类似 inetd 的服务,添加了“make-inetd-constructor”过程。
  • 为了创建在网络活动期间激活的服务(以 systemd 套接字激活方式),添加了“make-systemd-constructor”过程。
  • 添加了在后台启动服务的过程 - “在后台启动”。
  • 在“make-forkexec-constructor”例程中添加了参数“:supplementary-groups”、“#:create-session”和“#:resource-limits”。
  • 在等待 PID 文件时启用无阻塞操作。
  • 对于不带“#:log-file”参数的服务,提供到 syslog 的输出,对于带 #:log-file 参数的服务,日志将写入一个单独的文件,指示记录时间。 来自非特权牧羊人进程的日志存储在 $XDG_DATA_DIR 目录中。
  • 对使用 Guile 2.0 进行构建的支持已停止。 使用 Guile 版本 3.0.5-3.0.7 时出现的问题已得到解决。
  • 现在需要 Fibers 库 1.1.0 或更高版本才能工作。

来源: opennet.ru

添加评论