s6-rc

A modern but thrifty service manager

s6-rc is the service manager component of the s6 init system: a suite of programs that can start and stop services — both long-running daemons and one-time initialization scripts — in the proper order according to a dependency tree. It ensures that long-running daemons are supervised by the s6-supervision infrastructure, and that one-time scripts are also run in a controlled environment.

s6-rc implements the service management engine, the mechanism, the part that does the real work, as opposed to the presentation and interface layers. s6-rc's interfaces are command-line based, in traditional Unix fashion; they can be used by regular Unix administrators, but they are also designed to be easy to use programmatically, and friendly to automation. Providing a human-friendly user interface is not the job of s6-rc, but of the larger s6-frontend project.

This set of documents is a deep dive into s6-rc's design, the concepts it uses, and the various components of the s6-rc package and how they work.

Table of contents

The s6-rc prototype

The version of s6-rc being worked on is known as s6-rc version 1. But a prototype of this service manager, s6-rc version 0, exists and is already usable. It does not support externals, virtuals, or dynamic instantiation, but any configuration that only uses static services that do not depend on external events can benefit from it.

The code and complete documentation for s6-rc version 0 can be found here. It is still pretty relevant to s6-rc version 1, at least in the early stages - it has informed many of the decisions that have went into it. As development progresses, documentation in these pages will paint a more accurate picture of s6-rc version 1, and the documentation for version 0 will become more obsolete.

Generic concepts

The generic service management concepts implemented by s6-rc are described in their own page.

Classification of services

The classification of different types of services handled by s6-rc is described in its own page.

The s6-rc commands

s6-rc commands each have their own page, which serves as a manual page for the command:

  • s6-rc-compile, the service database compiler.
  • s6-rc-db, the compiled service database analyzer.
  • s6-rcd, the service manager daemon.
  • s6-rc, the service manager command line interface.