From ae97e8065a0e3be60d16c0d9e158afc697aa94e5 Mon Sep 17 00:00:00 2001 From: Laurent Bercot Date: Thu, 5 Apr 2018 09:42:37 +0000 Subject: Add note about SIGINT in s6-svscan and s6-supervise doc --- AUTHORS | 1 + doc/s6-supervise.html | 11 +++++++++++ doc/s6-svscan.html | 15 ++++++++++++++- 3 files changed, 26 insertions(+), 1 deletion(-) diff --git a/AUTHORS b/AUTHORS index b877693..12999df 100644 --- a/AUTHORS +++ b/AUTHORS @@ -29,3 +29,4 @@ Thanks to: Martin Misuth Samuel Holland Hardware + Earl Chew diff --git a/doc/s6-supervise.html b/doc/s6-supervise.html index b2a83d5..d9852b5 100644 --- a/doc/s6-supervise.html +++ b/doc/s6-supervise.html @@ -171,6 +171,17 @@ better to have a collection of service directories single scan directory, and just run s6-svscan on that scan directory. s6-svscan will spawn the necessary s6-supervise processes, and will also take care of logged services. +
  • s6-supervise is not supposed to have a controlling terminal: it's generally +launched by a s6-svscan process that itself does not +have a controlling terminal. If you run s6-supervise from an interactive shell, be +warned that typing ^C in the controlling terminal (which sends a SIGINT to +all processes in the foreground process group in the terminal) will terminate +s6-supervise, but not the supervised processes - so, the daemon will keep running +as an orphan. This is by design: supervised processes should be as resilient as +possible, even when their supervisors die. However, if you want to launch +s6-supervise from an interactive shell and need your service to die when you ^C it, +you can obtain this behaviour by creating a ./nosetsid file in the +service directory.
  • You can use s6-svc to send commands to the s6-supervise process; mostly to change the service state and send signals to the monitored process.
  • diff --git a/doc/s6-svscan.html b/doc/s6-svscan.html index 7649abd..4bb943b 100644 --- a/doc/s6-svscan.html +++ b/doc/s6-svscan.html @@ -200,7 +200,7 @@ uses s6-svscanctl -n), but inactive s6-supervise processes will not be restarted if they die.

    -

    Implementation notes

    +

    Notes

    • s6-svscan is designed to run until the machine is shut down. It is @@ -220,6 +220,19 @@ to guarantee that s6-svscan does not use heap memory at all.
    • When run with the -t0 option, s6-svscan never polls, it only wakes up on notifications, just like s6-supervise. The s6 supervision tree can be used in energy-critical environments.
    • +
    • The supervision tree (i.e. the tree of processes made of s6-svscan and +all its scions) is not supposed to have a controlling terminal; s6-svscan +generally is either process 1 or a child of process 1, not something that is +launched from a terminal. If you run s6-svscan from an interactive shell, be +warned that typing ^C in the controlling terminal (which sends a SIGINT to +all processes in the foreground process group in the terminal) will terminate +the supervision tree, but not the supervised processes - so, the supervised +processes will keep running as orphans. This is by design: supervised +processes should be as resilient as possible, even when their supervisors +die. However, if you want to launch s6-svscan from an interactive shell and +need your services to die with the supervision tree when you ^C it, you can +obtain this behaviour by creating ./nosetsid files in every +service directory.
    -- cgit v1.3.1