s6
Software
skarnet.org
The s6-svscanctl program
s6-svscanctl sends commands to a running s6-svscan
process.
Interface
s6-svscanctl [ -zabhitqnN ] scandir
s6-svscanctl sends the given series of commands to the
s6-svscan process monitoring the
scandir directory, then exits 0. It exits 111 if it cannot send
a command, or 100 if no s6-svscan process is running on scandir.
Options
- -z : destroy zombies. Immediately triggers s6-svscan's
reaper mechanism.
- -a : Alarm. s6-svscan will immediately perform a scan
of scandir to check for services.
- -b : abort. s6-svscan will exec into its finishing
procedure. It will not kill any of the maintained s6-supervise processes,
unless a t or q option is also present before the b
option in the s6-svscanctl invocation.
- -h : Reload configuration. s6-svscan will perform a scan,
and destroy inactive services. Equivalent to -an.
- -i : equivalent to -t below.
- -t : Terminate. s6-svscan will send a
SIGTERM to all the s6-supervise processes supervising a service and a
SIGHUP to all the s6-supervise processes supervising a logger, then exec into
its finish procedure. This means that services will be brought down but
loggers will exit naturally on EOF, and s6-svscan will wait for them to exit
before exec'ing into .s6-svscan/finish or exiting itself: it's a
clean shutdown with no loss of logs.
- -q : Quit. s6-svscan will send all its s6-supervise processes
a SIGTERM, then exec into its finish procedure. This is different from -t
in that services and loggers will be forcibly killed, so the quit
procedure may be faster but in-flight logs may be lost.
- -n : nuke. s6-svscan will kill all the
s6-supervise processes it has launched but that did not match a service
directory last time scandir was scanned, i.e. it prunes the
supervision tree so that it matches exactly what was in scandir
at the time of the last scan. A SIGTERM is sent to the s6-supervise processes
supervising services and a SIGHUP is sent to the s6-supervise processes
supervising loggers.
- -N : Really nuke. Does the same thing as -n,
except that SIGTERM is sent to all the relevant s6-supervise processes, even
if they are supervising loggers. This is not recommended in a situation where
you do not need to tear down the supervision tree.
Internals
s6-svscanctl writes control commands into the scandir/.s6-svscan/control
FIFO. An s6-svscan process running on scandir will be listening to this FIFO,
and will read and interpret those commands.