Release of the GNU Shepherd 0.8 init system

Available service manager GNU Shepherd 0.8 (ex dmd), which is being developed by the developers of the GNU Guix System distribution as a dependency-supporting alternative to the SysV-init 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 can be used both as the main init system (init with PID 1), and in a separate form to manage background processes of individual users (for example, to run tor, privoxy, mcron, etc.) with execution with the rights of these users. 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.

Main innovations:

  • make-kill-destructor implements killing a group of processes;
  • Added parameter "default-pid-file-timeout", which determines the timeout for creating a PID file;
  • If the PID file does not appear within the timeout, the entire group of processes is terminated (decides problem leaving worker processes without a PID file);
  • Added the "#:file-creation-mask" parameter to "make-forkexec-constructor", implemented the creation of log files, and removed support for the old calling convention;
  • Fixed compilation issues on systems without prctl, such as GNU/Hurd;
  • Fixed a bug that caused SIGALRM to be sent every second.

Source: opennet.ru

Add a comment