s6
Software
skarnet.org
The s6-svunlink program
s6-svunlink unlinks a service
directory from a scan directory, then
notifies s6-svscan that a service has
been unregistered. It waits until the s6-supervise
supervisor process managing the service has disappeared, then exits.
The point of s6-svunlink is to help integrate
service directories into an existing service manager sequence and
eliminate race conditions.
Interface
s6-svunlink [ -X ] [ -t timeout ] scandir name
- s6-svunlink expects a running s6-svscan
process on scandir and a fully functional supervised service on
service directory in scandir/name,
which must be a symbolic link to a real directory located somewhere else.
- It deletes the scandir/name symlink.
- It sends a command to s6-svscan to signal it
that a service has disappeared.
- It waits for the s6-supervise process
managing the service directory to exit.
- It exits 0.
Exit codes
- 0: success
- 100: wrong usage
- 111: system call failed
Options
- -X : don't wait. s6-svunlink will exit right
away, without waiting for the supervisor to exit first.
- -t timeout : if the supervisor has not exited
after timeout milliseconds, s6-svlink will still exit.
The default is 0, meaning no time limit..
Notes
- Using s6-svlink to stop services is a suboptimal pattern:
starting and stopping supervisors is a heavier operation than just stopping
services. The simpler, more efficient pattern is to simply perform
s6-svc -dwD scandir/name,
which only commands, and waits for, the death of the service, without
impacting the supervisor. Nevertheless, for symmetry with
s6-svlink, this program is provided.
- s6-svunlink is a destructor; as is, it returns 0 even in
situations that are nominally a failure. For instance, it returns 0 even
if its timeout expires; the rationale is that there is no sensible action
for the user to do if this error is reported. s6-svunlink only
reports errors when they uncover a deeper problem in the system.