A partir dos documentos
For each control character c sent to the control pipe, runsv first checks if service/control/c exists and is executable. If so, it starts service/control/c and waits for it to terminate, before interpreting the command. If the program exits with return code 0, runsv refrains from sending the service the corresponding signal. The command o is always considered as command u. On command d first service/control/t is checked, and then service/control/d. On command x first service/control/t is checked, and then service/control/x. The control of the optional log service cannot be customized.
Isso significa que você precisa criar um service_name/control/X
, sendo X um executável que será executado quando você enviar o comando sv
relacionado ao serviço, como o comando d
(inativo). Se o seu script sair com o status 0, ele não tentará baixar o serviço em si.
Basicamente, você precisa de um script executável em /etc/sv/<service>/control/d
, que fará o que quiser e matará o serviço, limpará os pids e etc.