GNU SHEPHERD Initialization System Release 0.9

Two years later from the moment of the formation of the past significant release Published Service Manager gnu shepherd 0.9 ( Former DMD ), which develops the developers of the GNU GUIX SYSTEM distribution kit as an alternative to the SYSV-INIT initialization system that supports dependencies. The Shepherd control demon and utilities are written in Guile (one of the implementations of the Scheme language), which is also used to determine the settings and settings for running services. Shepherd is already used in the GUIXSD GNU / Linux distribution and aims also aims to use GNU / HURD, but can work in any POSIX-compatible OS for which the GUILE language is available.

Shepherd performs work on starting and stopping services, given the relationship between services, dynamically defining and running services on which the selected service depends. Shepherd also supports the definition of conflicts between services and prevents simultaneous execution. The project can be used in both the role of the primary initialization system (INIT C PID 1) and in a separate form for managing the background processes of individual users (for example, to start Tor, Privoxy, Mcron, etc.) with execution with user data rights.

Main innovations:

  • Implemented concept of temporary services ( transient ) Automatically disabled after completion due to the termination of the process or call the “Stop” method, which may be required for synthesized services that cannot be restarted after the completion.
  • To create inetd-like services, the “Make-Inetd-Constructor” procedure is added.
  • to create services activated with network activity (in the style of SystemD Socket Activation), added the “make-systemd-constructor” procedure.
  • Added procedure to start the service in the background – “start-in-the-background”.
  • in the “Make-Forkexec-Constructor” procedure options “: Supplementary-Groups”, “#: Create-Session” and “#: Resource-Limits”.
  • provided operation without blocking while waiting for PID files.
  • for services without parameter “#: log-file” is provided with SYSLOG, and for services with a parameter #: log-file “- log entry into a separate file with an indication of the time of entries. Logs from the non-privileged SHEPHERD process are saved in the $ catalog Xdg_data_dir.
  • stopped support for the assembly with Guile 2.0. Solved problems when using Guile versions 3.0.5-3.0.7.
  • For work now requires the fibers 1.1.0 or a newer version.
/Media reports.