Release of service manager s6-rc 0.7

The release of the service manager s6-rc 0.7.0.0 has been published, designed to manage the execution of initialization scripts and services. It supports tracking dependency trees and automatically starting or stopping services to reach the specified state. The s6-rc toolkit can be used in both initialization systems and for organizing the startup of arbitrary services tied to events reflecting changes in system state. The system supports initialization scripts compatible with sysv-init and can import dependency information from sysv-rc or OpenRC. The code is written in C and is distributed under the ISC license.

The s6-rc service manager includes a set of utilities for starting and stopping long-running processes (daemons) or scripts that terminate immediately. During operation, it ensures parallel execution of non-overlapping services and guarantees a consistent execution sequence of scripts across different launches. All state changes are handled with respect to dependencies, for example, when starting a service, the necessary dependencies for its operation will be automatically started, and when stopping, dependent services will also be halted.

Unlike other service managers, s6-rc supports proactive (in offline mode) construction of a dependency graph for the existing set of services, allowing resource-intensive dependency analysis to be completed separately, rather than during boot or state change. The system is not monolithic and is divided into a series of separate and replaceable modules, each of which, in accordance with Unix philosophy, addresses only a specific task. The s6-rc project adheres to minimalism (it contains nothing superfluous) and consumes minimal resources.

Instead of runlevels in s6-rc, the concept of bundles is proposed, allowing services to be grouped by arbitrary criteria and tasks. To enhance efficiency, a compiled dependency database is created by the s6-rc-compile utility based on the contents of directories with service start/stop files. Utilities s6-rc-db and s6-rc-update are provided for parsing and manipulating the database. The s6 toolkit is used in Obarun, Adelie, and Artix distributions, and can optionally be used in Gentoo, Void, and Alpine.

The project also develops companion packages that complement s6-rc:

  • s6 — utilities for monitoring and managing processes (similar to daemontools and runit). Features such as restarting processes after crashes, launching handlers (service activation) when a network port is accessed, event logging (replacement for syslogd), and controlled provision of additional privileges (like sudo) are supported.
  • s6-linux-init — an implementation of the init process for operating systems based on the Linux kernel, used for creating initialization systems where s6 and s6-rc packages manage services and scripts.
  • s6-networking — a set of utilities for creating network services, similar to ucspi.
  • s6-frontend — a wrapper to recreate the functionality of daemontools and runit on top of s6.
  • s6-portable-utils — a set of standard Unix utilities, such as cut, chmod, ls, sort, and grep, optimized for minimal resource consumption and distributed under the ISC license.
  • s6-linux-utils — a set of Linux-bound utilities, such as chroot, freeramdisk, logwatch, mount, and swapon.
  • mdevd — event manager (similar to udevd), designed for handling hot plugging of devices. According to its configuration, mdevd is compatible with mdev from Busybox.
  • bcnm — a network configurator with capabilities for configuring Wi-Fi on the client side.
  • execline — a scripting language.
  • skalibs — a library for creating secure system applications in the C programming language.
  • s6-dns — a set of client libraries and utilities that replace standard DNS utilities from BIND and djbdns.
  • dnsfunnel — redirects local DNS queries to external ones. server (DNS forwarder).
  • shibari — a simple DNS server.
  • tipidee — an HTTP server supporting HTTP/1.1.

In the new version of s6-rc and its related utilities:

  • The command 's6-rc reload' has been implemented to restart long-running services.
  • A management file reload-signal has been added to define the signal sent to the process for restarting (default is SIGHUP).
  • The utility s6-rc-bundle has been removed — modifying bundle sets without recompilation is no longer supported.
  • A new internal database format has been proposed (updating requires recompilation and running the utility s6-rc-format-upgrade).
  • Correct handling of the situation of restarting the utility s6-rc-init for initializing services has been ensured, and the handling of system failures has been improved.
  • The utility s6-rc-set-change has been enhanced with options: -I/-i to output a warning or exit with an error upon discovering a conflicting dependency; -P/-p to disable/enable automatic resolution of dependency conflicts when changing service states.
  • The outdated option '-f' has been removed.
  • The utility s6 has added the command s6-svscanboot to redirect logs from the supervisor s6-svscan to s6-log when it is not running under PID 1.
  • The option 's6-svc -l' has been implemented to send a signal for restarting.
  • Support for options and commands has been added to the user interface s6-frontend: 's6 —user' (for working with user services), 's6 live reset', 's6 apply', 's6 enable|disable|start|stop|kill|apply', 's6 live stop —clean'.
  • The http server tipidee has implemented support for FastCGI and has added the option cgi_pass_authorization.

    Source: opennet.ru
Buy reliable website hosting with DDoS protection, VPS VDS servers 🔥 Buy reliable website hosting with DDoS protection, VPS VDS servers | ProHoster