Sixty-six (66) is an independent Linux service manager with its own native process supervision (historically inspired by s6), designed to simplify the implementation and management of service files on your machine. It provides a comprehensive toolbox for declaring, implementing, and administering services with minimal code while delivering powerful functionality.
- Frontend Service Files Declaration: Service files are written in an INI format, making them straightforward to read and edit.
- Simple Scandir Creation: Easily create scandir directories for both the root and regular users, allowing for efficient service management across different user levels.
- Nested Scandir Supervision: Regular users have their own independent scandir directories, separate from the root, ensuring user-specific supervision without interference.
- Instance Service File Creation: Supports instantiated service.
- Identifier Interpretation: Supports specific identifiers that are replaced at parse time to simplify service file creation.
- Service Configuration Changes: Includes built-in versioning for configuration files, including environment variables, to streamline service updates and changes.
- Automatic Logger Creation (not mandatory): Automatically creates dedicated loggers for each service, covering both classic and oneshot service types.
- Help on I/O Redirection: Provides keywords in frontend files for easy control over standard input, output, and error redirection.
- Service Notification: Ensures services are fully ready before managing their dependency chains, using a readiness notification mechanism.
- Service Organization as a Tree: Allows quick management and visualization of service groups within a tree structure.
- Service Status Overview: Offers a comprehensive set of tools to monitor the state of services and access detailed information easily.
- User Service Declaration: Users can declare and manage their own services, facilitating personalized service management.
- Automatic Dependency Chains: Automatically handles and maintains service dependencies, ensuring smooth and reliable service operations.
- Service Order Dependencies: Guarantees reliable, stable, and reproducible service order dependencies to maintain consistent service behavior.
- Snapshot Management: Allows the creation and management of snapshots of your service system, enabling easy backup, recovery, and sharing of service states across multiple hosts.
- Event-Driven Reactions: Services can react to what happens elsewhere on the system — another service going up, down or crashing, a routed signal, a filesystem change, a timer, a cron schedule, or an event raised by hand or by another service — and respond by running a
66command on themselves or by emitting further events. A dedicated66-eventddaemon evaluates these rules, so services start, stop or reconfigure dynamically instead of every condition being hard-coded into the service manager.
- No Reboot Required During Upgrades: Service updates do not require system reboots, ensuring continuous operation.
- Independent of Boot Management: 66 can supervise services independently of the boot process, making it optional to use 66 from startup. It is also fully compatible with virtualization platforms like containerd, Podman, and Docker, allowing for easy monitoring of services within containers.
- Readable Logs: Logs are stored in a human-readable format for easier analysis and debugging.
- File Descriptor Holding for Log Pipes: Utilizes file descriptor holding for efficient log piping, enhancing reliability and performance.
66 focuses on mechanisms, not policies, and can be compiled with either glibc or musl for flexibility across different systems.
See the INSTALL.md file.
Online documentation
-
Email: Eric Vidal
<eric@obarun.org> -
Mailing list https://obarun.org/mailman/listinfo/66_obarun.org/
-
Web site: https://web.obarun.org/
-
XMPP Channel: obarun@conference.xmpp.obarun.org
Please consider to make donation
66 does not provide any frontend service files by default. 66 works on mechanisms not on policies.
The boot sequence can be a tedious task to accomplish. A portable and complete set of services can be found here.
This set of services works out of the box and is highly configurable to suit the needs of the distributions.
POC was made on Gentoo, Funtoo, Devuan, Void, Adelie, Antix, Arch and Obarun.
You can find several examples for common daemons here for several distributions (Thanks to all contributors).
By default, 66 use execline as scripting language. However, you can specify the scripting language to use.
66-tools provides some additional tools to help you on this task.
Some are specific to execline where other can be used on classic shell.
This Roadmap for the next releases is not written in stone. Feel free to make a merge request to this roadmap.
-
Replacement of s6:
66 was historically built around the s6 supervision suite. It now ships its own native programs —
66-scandir,66-supervise,66-logand66-svctl— replacings6-svscan,s6-supervise,s6-logands6-svc. The build no longer depends onskalibsors6: 66 is now a fully independent service manager, relying only onoblibsand, at runtime,execline. -
Revise the frontend file's keyword field by excluding the
@symbol:For instance,
@dependswill beDepends. That will allow for a file that's closer to the original INI format and less confusing for users. -
Provide a
[Documentation]section:Enable the provision of documentation for each service using a [Documentation] section. This documentation will be easily accessible by invoking the 66 doc command.
-
Provide a
Conflictkeyword at frontend file:Allow to declare a conflicting service through the
Conflictfield, e.g.connmandservice will declareConflict = ( networkmanager ). -
Provide a
Providekeyword at frontend file:Allow to declare an alias service through the
Providefield, e.g.connmandservice will declareProvide = ( Network ). -
Provide keyword for basic operations:
Certain repetitive tasks can be more efficiently managed directly by
66in C rather than scripting them in theExecutefield. For example, utilizing aChangeDirectorykeyword can facilitate moving to the declared WorkDir value before executing the script. -
Reacts on event:
Implementation of a daemon for event response to allow users to define services that dynamically start and stop when certain conditions are met, without needing to encode every possible condition in the service manager configuration.
-
Ability to redirect stdin, stdout and stderr
Allow to specify to make redirection of standard output
-
Ability to Handle a general environment structure
Every scandir will start with environment variable define by user through configuration file at specific directory, for instance
/etc/66/environment. -
Ability through a new command to update the general environment.
-
Provide Hook for boot process
Allow at specific point of the boot process to execute specific tasks given by user.
-
Extend 66-supervise
Extend the native
66-superviseprogram to include support for a[Reload]section, handling tasks before executing the service and managing job events. -
Provide capabilities management
Implementation of
CapsBoundandCapsAmbientto manage bounding set and Ambient capabilities respectively. -
Provide namespace management
Implementation of a new
[Namespace]section to control build and control sandboxing. -
Provide cgroups management
Ability to configure and control cgroups of the process and sub-process.