aboutsummaryrefslogtreecommitdiffstats
s6-frontend: the s6 system command

The s6 command
s6-frontend
Software
skarnet.org

The s6 system command

s6 system groups actions related to booting or shutting down the system.

Interface

     s6 system subcommand
  • No subcommand takes any options.

Subcommands

help

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

boot

Interface

     s6 system boot
  • s6 system boot initializes the live directory for s6-rc then starts all the services defined in the default bundle. In other words, it brings the system from a state where nothing is running to a state where everything the user wants is running.
  • This is the command that should be called as soon as the init program hands off duties.
    • On a system making use of s6-linux-init, s6 system boot should be run by the /etc/rc.init script. No other command needs to appear in that script.
    • On a system using /etc/inittab, you need to add two lines at the beginning of /etc/inittab:
      • The first line should be a command that runs and respawns s6-svscan, ideally with a catch-all logger. This could be something like ::respawn:/usr/lib/s6/s6-svscanboot, with /usr/lib/s6/s6-svscanboot being similar to the script used in Alpine Linux to start an instance of s6-svscan supervising its own catch-all logger.
      • The second line should be ::wait:/usr/bin/s6 system boot.
      • For complete safety, there should be a synchronization mechanism so that the second line never starts before s6-svscan is ready. A quick and (very) dirty way to synchronize is polling on s6-svscan before running the command: ::wait:until s6-svscanctl /run/service 2>/dev/null; do :; done && exec /usr/bin/s6 system boot
    • It is also possible to run a complete s6 ecosystem under systemd, but it is redundant, so it's unlikely that anyone would want to do it. For the sake of completeness, the way would be to define two unit files: the first one to launch s6-svscan, as documented here, and the second one, specified to run after the first one, to run the s6 system boot command as a one-shot.

The rest of the subcommands are shutdown subcommands, and they only work if the machine makes use of s6-linux-init and s6-frontend has been configured to support it. On a machine that does not boot via s6-linux-init, a shutdown should be executed via the shutdown commands provided by your init system. In order for the shutdown to be clean, the command s6 live stop-everything -E should be run before the init system performs a hard shutdown. For instance, if the system uses /etc/inittab, then the following line should appear in /etc/inittab: ::shutdown:/usr/bin/s6 live stop-everything -E

reboot

Interface

     s6 system reboot
  • s6 system reboot reboots the machine.
  • This only works if the machine makes use of s6-linux-init and s6-frontend has been configured to support it.

poweroff

Interface

     s6 system poweroff
  • s6 system poweroff halts the system and turns the power off.
  • This only works if the machine makes use of s6-linux-init and s6-frontend has been configured to support it.

halt

Interface

     s6 system halt
  • s6 system halt halts the system without turning the power off.
  • This only works if the machine makes use of s6-linux-init and s6-frontend has been configured to support it.