service manager (), which is developed by the developers of the GNU Guix System distribution as a supporting dependency alternative to the SysV-init initialization system. The managing daemon and the Shepherd utilities are written in Guile (one of the implementations of the Scheme language), which is also used to define settings and parameters for launching services. Shepherd is already used in the GuixSD GNU/Linux distribution and is also aimed at use in GNU/Hurd, but can work in any POSIX-compliant OS for which the Guile language is available.
Shepherd can be used both as the main initialization system (init with PID 1) and in a standalone mode to manage background processes of individual users (for example, to launch tor, privoxy, mcron, etc.) executing with the rights of those users. Shepherd handles the starting and stopping of services, taking into account the interdependencies between services, dynamically determining and launching the services that the chosen service depends on. Shepherd also supports defining conflicts between services and prevents them from running simultaneously.
Key innovations:
- A new process failure handler has been implemented that allows generating core dumps in GNU/Linux when running under PID 1;
- The service manager now has the ability to export environment variables defined in the "default-environment-variables" setting;
- The deletion of log files has been discontinued in "make-forkexec-constructor";
- Rebooting by pressing ctrl-alt-del is now prohibited at the stage before processing the configuration file;
- Exception handling code has been adapted for .
Source: opennet.ru
