Você não está capturando o código de retorno de start-stop-daemon .
Seu problema é que você está iniciando em segundo plano e é iniciado corretamente. Quero dizer que você está capturando o código de retorno de starting something in background that wants to start something in background .
Tente isto:
rm /tmp/not_existent_file &
echo $?
Isso sempre imprime 0 .
Para obter o código de retorno de um processo em segundo plano, você deve esperar que ele saia com wait . Aqui está um exemplo:
rm /tmp/not_existent_file &
wait $!
echo $?
Se você quiser iniciar o processo que não está bifurcando sozinho, tente usar a opção --background e remova & do final da linha start-stop-daemon .