Para exec
Depois de ler a pergunta e resposta de Significado de "exec env COMMAND" env … com um exec
. Isso impedirá a desova de um processo filho. No entanto, ps
outputs {svscanboot} /bin/sh /opt/bin/svscanboot
. Esse nome será alterado para svscan /opt/service
após o exec
.
Ou para interceptar sinais
A outra maneira de lidar com isso é através de uma armadilha que propaga os sinais para o processo filho. Como Encaminhe SIGTERM para o filho no Bash ou o mais detalhadamente explicado < href="http://veithen.github.io/2014/11/16/sigterm-propagation.html"> link
O problema com esta rota de solução é que o número de sinal -9
do SIGKILL não pode ser capturado.
Exec com uma solução alternativa de alteração de nome
Por não conseguir capturar o sinal KILL, escolherei a rota exec
:
…
exec env - PATH=$PATH svscan /opt/service 2>&1
Isto ainda torna as coisas complicadas para parar / matar / reconfigurar o "svscanboot" dentro do sistema init Entware devido ao nome alterado. Essa alteração do nome do processo exec irá precisar de uma solução alternativa.
svscanboot de mímica
O script entware-daemontools-init-script pode ser alterado para imitar svscanboot
, como:
ENABLED=yes
#PRECMD="exec </dev/null;exec >/dev/null;exec 2>/dev/null;/opt/bin/svc -dx /opt/service/* /opt/service/*/log"
PROCS="svscan"
ARGS="/opt/service 2>&1"
PATH=/opt/sbin:/opt/bin:/sbin:/bin:/usr/sbin:/usr/bin
PREARGS="env - PATH=$PATH"
DESC="daemontools"
O PRECMD comentado faz com que svscan
não seja iniciado.