start-stop-daemon sempre retorna '0' embora o processo falhe

0

Estou tentando obter um script de inicialização em execução que inicie nodejs como um daemon. O problema é que, quando executo start-stop-daemon , ele sempre retorna '0', independentemente do erro que o daemon nodejs possa retornar.

Cheguei ao ponto de descobrir que o problema surge ao usar start-stop-daemon com a opção --background .

Com a opção , start-stop-daemon sempre retorna '0', mesmo quando o daemon nodejs falha.

root# start-stop-daemon --start --chuid $GHOST_USER:$GHOST_GROUP --chdir $GHOST_ROOT --make-pidfile --pidfile $PIDFILE --exec $DAEMON  --background -- $DAEMON_ARGS ; echo ---error: $?
---error: 0

Note que o daemon falhou silenciosamente e NÃO está rodando neste momento!

Sem a opção , podemos realmente ver o daemon não iniciar.

root# start-stop-daemon --start --chuid $GHOST_USER:$GHOST_GROUP --chdir $GHOST_ROOT --make-pidfile --pidfile $PIDFILE --exec $DAEMON  -- $DAEMON_ARGS ; echo ---error: $?
ERROR: Unsupported version of Node
Ghost needs Node version ~0.10.0 || ~0.12.0 || ^4.2.0 you are using version 5.10.0

Please see http://support.ghost.org/supported-node-versions/ for more information
---error: 231

Agora estou procurando uma solução para poder usar a opção --background e ter um código de erro maior que '0' quando ele não conseguir iniciar o daemon nodejs.

    
por Hurrdurrfurr 05.04.2016 / 22:56

1 resposta

2

Este é um comportamento documentado. O processo de primeiro plano é concluído depois de bifurcar o processo de segundo plano. Na página do manual:

-b, --background
          Typically used with programs that don't detach on their own. This option will force start-stop-daemon to fork before starting the process, and  force
          it  into  the  background.   Warning:  start-stop-daemon  cannot check the exit status if the process fails to execute for any reason. This is a last
          resort, and is only meant for programs that either make no sense forking on their own, or where it's not feasible to add the code for them to do this
          themselves.
    
por 06.04.2016 / 00:38