Release of the GNU Shepherd 0.9.2 init system

The GNU Shepherd 0.9.2 (formerly dmd) service manager has been published and is being developed by the developers of the GNU Guix System distribution as an alternative to the dependency-supporting SysV-init initialization system. The Shepherd control daemon and utilities are written in the Guile language (one of the implementations of the Scheme language), which is also used to define settings and parameters for starting services. Shepherd is already used in the GuixSD GNU/Linux distribution and is also intended for use in GNU/Hurd, but can run on any POSIX-compliant OS for which the Guile language is available.

Shepherd does the work of starting and stopping services by taking into account the relationship between services, dynamically determining and starting the services on which the selected service depends. Shepherd also supports conflict detection between services and prevents them from running concurrently. The project can be used both as the main initialization system (init with PID 1) and as a standalone to manage background processes of individual users (for example, to run tor, privoxy, mcron, etc.) with execution with the rights of these users.

Among the changes:

  • File descriptors used in Shepherd are now marked with the O_CLOEXEC (close-on-exec) flag, and are not closed immediately when "exec-command" is executed, which allows descriptors to be passed to services that are not started directly, but with the help of "exec-command".
  • Client connections are now handled in non-blocking mode, which prevents shepherd from hanging when sending an incomplete command.
  • Provided the creation of a directory for the log files defined in the "log-file" setting, in case of its absence.

Source: opennet.ru

Add a comment