From ad8302b50b20c57d5067c681a2bb1249ce2a28be Mon Sep 17 00:00:00 2001 From: Laurent Bercot Date: Fri, 10 Apr 2026 12:47:59 +0000 Subject: Go a little easier on execline advocacy --- doc/overview.html | 5 ++++- doc/s6-svscan-1.html | 17 +++++++---------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/doc/overview.html b/doc/overview.html index b4f977a..164cffd 100644 --- a/doc/overview.html +++ b/doc/overview.html @@ -313,7 +313,7 @@ order. Very often, a run script can be reduced to a single command line - likely a long one, but still a single one. (That is the main reason why using the execline language -to write run scripts is recommended: execline makes it natural to handle +to write run scripts is a good idea: execline makes it natural to handle long command lines made of massive amounts of chain loading. This is by no means mandatory, though: a run script can be any executable file you want, provided that running it eventually results in a long-lived process with @@ -383,6 +383,9 @@ to check whether they're ready or not: s6-notifyoncheck. This is polling, which is bad, but unfortunately necessary for many daemons as of 2019. +
  • The s6-notify-fd-from-socket +program is the s6 way of supporting programs that use systemd's sd_notify() +notification mechanism.
  • diff --git a/doc/s6-svscan-1.html b/doc/s6-svscan-1.html index b68d2bb..875e22e 100644 --- a/doc/s6-svscan-1.html +++ b/doc/s6-svscan-1.html @@ -237,12 +237,10 @@ init a script.

    Of course, most people will use the shell as scripting -language; however, I advocate the use of -execline -for this, and not only for the obvious reasons. Piping s6-svscan's +language; however, they will find that piping s6-svscan's stderr to a logging service before said service is even up requires -some tricky fifo handling that execline can do -and the shell cannot. +some tricky fifo handling that the shell cannot +do portably. See below for more details.

    @@ -254,8 +252,7 @@ and the shell cannot. stage 3 init is naturally the /run/service/.s6-svscan/finish program. Of course, /run/service/.s6-svscan/finish can be a symbolic link to anything else; just make sure it points to something in the root -filesystem (unless your program is an execline script, in which case -it is not even necessary). +filesystem.

    What stage 3-4 init must do

    @@ -382,15 +379,15 @@ that will provide such a reader process.

    - This second point cannot be solved in a shell script, and that is why -you are discouraged to write your stage 1 init script in the shell + This second point cannot be portably solved in a shell script, and that is why +it's a deceptively bad idea to write your stage 1 init script in the shell language: you cannot properly set up a FIFO output for s6-svscan without resorting to horrible and unreliable hacks involving a temporary background FIFO reader process.

    - Instead, you are encouraged to use the + Instead, I suggest using the execline language - or, at least, the redirfd -- cgit v1.3.1