S6(8)

NAME
s6 - generic command-line utility that can be used to interact with a system managed by the s6 process supervision system[1], the s6-rc service manager[2], and optionally the s6-linux-init boot program[3]

SYNOPSIS
s6 [global_options...] command subcommand [subcommand_options...] [args...]

DESCRIPTION
s6 reads its configuration file.

It reads from the command line, in this order: global options, a command, a subcommand, potentially subcommand options, and potentially arguments to the command and subcommand.

It performs various operations, typically invoking binaries from various parts of the s6 ecosystem, depending on the given command and subcommand.

  Notes

•   s6 does not perform real operations itself. Instead, after finding the path to its configuration file conf (cf. s6-frontend.conf(5)), it rewrites itself into ‘envfile -I conf -- s6-frontend global_options... command subcommand subcommand_options... args...’

    •   envfile(1) reads and parses conf

    •   s6-frontend(8) is the binary that does the real work of parsing options, command, subcommand, etc. and dispatching orders.

GLOBAL OPTIONS
global_options... is a list of options that modify s6's behaviour and policies. They should generally not be used; instead, the behaviour should be set in the configuration file (cf. s6-frontend.conf(5)). Nevertheless, if you need to override the configuration file settings for some reason, here you go.

-h, --help
    Run the ‘s6 help’ command. Any given command or subcommand is ignored.

-V, --version
    Run the ‘s6 version’ command. Any given command or subcommand is ignored.

-s scandir, --scandir=scandir
    Use scandir as scan directory (i.e. the directory where s6-svscan(8) runs and supervises service directories).

-l livedir, --livedir=livedir
    Use livedir as live directory (i.e. the directory where s6-rc(8) keeps tabs on the machine state and stores its runtime information).

-r repodir, --repodir=repodir
    Use repodir as s6-rc repository (i.e. the directory where the repo commands of the s6-rc package[2] store and manipulate their service sets).

-c bootdb, --bootdb=bootdb
    Use bootdb as the name of the compiled service database used by s6-rc at boot time (i.e. the directory where s6-rc(8) reads information on how to start all the wanted services).

--stmpdir=stmpdir
    Use stmpdir to store runtime s6-frontend data and temporary files.

--storelist=storelist
    Use storelist as list of stores (cf. s6-rc-repo(7)).

-v, --verbosity=verbosity
    Use verbosity as numerical verbosity value.

--color=yes|no|auto
    Use fancy output (which may or may not involve color): always if yes, never if no, and only when stdout is a terminal if auto. Not all commands and subcommands will use this setting. Also, for pretty-printing of columns, it is recommended to have built s6-frontend with util-linux support.

COMMANDS

  help
‘s6 help’ prints a short help message summarizing the options and usage of the s6 command. It is not as detailed as this page.

No subcommands are defined.

  version
‘s6 version’ prints the current version of s6-frontend, on one line.

No subcommands are defined.

  process
‘s6 process’ sends commands to long-running processes supervised by the s6 supervision suite[1]. The details are available in s6_process(8).

‘s6 process’ is typically used when a daemon needs to be restarted or otherwise addressed without involvement from the service manager, i.e. without having to start or stop dependencies.

  live
‘s6 live’ controls the live state of the machine, starting and stopping services, installing a new set of services, etc. It is mostly an interface around the s6-rc service manager[2]. The details are available in s6_live(8).

  repository
‘s6 repository’ groups administrative tasks related to the repository of service sets, typically synchronization with the service stores when the package manager updates service definitions. It is not often directly used by sysadmins, but is an essential part of distribution scripts, when they create the initial layout, run their package manager, etc.

The details are available in s6_repository(8).

  set
‘s6 set’ is the interface to the creation and manipulation of service sets by the user. It is how they define what service will be enabled or disabled at boot time. This manipulation occurs offline: service sets being worked on are distinct from the live state of the machine, accessible via ‘s6 live’ commands.

The details are available in s6_set(8).

  system
‘s6 system’ provides commands to run at boot and, on systems fully managed by s6, to shut the system down. The details are available in s6_system(8).

ENVIRONMENT
s6 reads the S6_FRONTEND_CONF environment variable containing the absolute path to the configuration file (cf. s6-frontend.conf(5)) for the s6 command.

If this variable is unset, the default is /etc/s6-frontend.conf, possibly overridden by the --conffile build-time configure option to s6-frontend.

EXIT STATUS
s6 always exits 0 on success, 100 on bad usage, and 111 on a system call failure.

It is difficult to exhaustively list all of the possible exit codes since it can exec into a wide variety of commands belonging to different parts of the s6 family of programs. However, in case of an error, the name of the subprogram where the error occurred is always printed on stderr; you can then consult the documentation for said subprogram, which will have the explanation for all its exit codes. For instance, if an invocation of s6 prints a message such as ‘s6-rc: fatal: unable to start service foobar’, it means that s6 invoked the s6-rc(8) command, and on the linked documentation page you can find the interpretation of its various exit codes.

SEE ALSO
envfile(1), s6-frontend.conf(5), s6-frontend-overview(7), s6-rc-repo(7), s6-frontend(8), s6-rc(8), s6-svscan(8), s6_live(8), s6_process(8), s6_repository(8), s6_set(8), s6_system(8)

[1] https://skarnet.org/software/s6/

[2] https://skarnet.org/software/s6-rc/

[3] https://skarnet.org/software/s6-linux-init/

This man page is ported from the authoritative documentation at: https://skarnet.org/software/s6-frontend/s6.html

AUTHORS
Laurent Bercot Lennart Jablonka <humm@ljabl.com> (man page port)