The latest release of the service manager s6-rc 0.6.0.0 is now available. This service manager is designed to effectively handle the launch of initialization scripts and services. It supports tracking the dependency tree and can automatically start or shut down services to reach a specified state. The s6-rc toolkit is versatile and can be utilized in both initialization systems and for organizing the launch of various services based on events that indicate changes in the system state. This system is compatible with sysv-init scripts and can import dependency information from sysv-rc or OpenRC. Written in the C language, the code is distributed under the ISC license. More information on this release can be found here.
The s6-rc service manager comes with a set of utilities that allow for the smooth starting and stopping of long-running processes (daemons) and initializing scripts. It ensures the parallel launch of services that do not intersect with each other, guaranteeing the repetition of script execution sequences during different launches. This system processes all state changes by considering dependencies, ensuring that when a service is started, the necessary dependencies for its operation are launched automatically, and when stopped, dependent services are also stopped.
What sets s6-rc apart from other service managers is its support for proactive construction of a dependency graph in offline mode. This means that resource-intensive dependency analysis can be performed separately, rather than during loading or state changes. The system is modular and not monolithic, with separate and replaceable modules that adhere to the Unix philosophy of solving specific tasks efficiently. The s6-rc project emphasizes minimalism, containing only essential components and consuming minimal resources.
Instead of runlevels, s6-rc introduces the concept of bundles, allowing services to be grouped based on specific characteristics and tasks. The system uses a compiled dependency database created by the s6-rc-compile utility from directories containing files for starting/stopping services. For database parsing and manipulation, utilities like s6-rc-db and s6-rc-update are provided.
In the new version, collections of utilities s6-rc-repo-* and s6-rc-set-* have been added to manage repositories with service definitions. Support for shared libraries on macOS platform is now available, and a new “–bootdb” option has been added to configure the bootable database with service and dependency information at the build stage. Additionally,