Not an option to be its parent since there's no persistent supervisor of a jail's root process, but that script using .s6-svscan/finish should do nicely. Thanks for the suggestion! - Jw On Wed, Feb 23, 2022 at 9:04 PM Laurent Bercot wrote: > > >What's the cleanest way to wait on s6-svscan to shut down after issuing of > >a SIGTERM (say s6 via-svscanctl -t)? > > Be its parent, and wait for it. :) > On SIGTERM, s6-svscan will not exit until the supervision tree is > entirely down, so that will work. > If you're not the parent, then you'll have to wait for a notification > somehow, but that's easy: > > When s6-svscan wants to exit, it doesn't exit right away, but > tries to exec into the .s6-svscan/finish script. So you have a clear > indicator here: when .s6-svscan/finish runs, it means the supervision > tree is down. > So, for instance, make a finish script that writes a byte in a fifo, > and have your jail shutdown script read on that fifo. Something like: > > .s6-svscan/finish: > #!/bin/sh > exec echo > /run/blah/fifo > > shutdown script: > #!/bin/sh > ... > rm -f /run/blah/fifo > mkfifo /run/blah/fifo > read < /run/blah/fifo & > s6-svscanctl -t /run/service > wait > ... > > (read on the fifo before running s6-svscanctl, to avoid the small > race condition.) > > > >Looking at the documentation, my only option appears to be to check if the > >return code of s6-svscanctl is 100, or maybe to monitor for the existence > >of .s6-svscan/control (not sure if it's removed on exit). Are there any > >other ways to monitor s6-svscan? > > Ew. Don't poll. > Use .s6-svscan/finish to do anything you want to do at s6-svscan > death time. > > -- > Laurent > >