Se você chamar o binário em /etc/rc.local
, observe que rc.local
é chamado como /bin/sh -e
. -e
significa que o script sai imediatamente se algum comando não testado falhar nele. Você chama o binário em segundo plano e outro comando no script pode sair com um código de saída que não é 0. Isso faz com que seu binário seja suspenso.
Um comando não testado de acordo com a página do manual:
The exit status of a command is considered to be explicitly tested if the command is used to control an if, elif, while, or until; or if the command is the left hand operand of an “&&” or “||” operator.
$ command # untested
$ command || echo failed # tested
$ if [ command ]; then... # tested, also while and until loops
$ [ command ] && echo ... # tested
Além disso, o arquivo rc.local
é o lugar errado para tal coisa, você não deve mais usá-lo, está obsoleto. Em vez disso, você deve usar o mecanismo de configuração de inicialização do sistema. Desde que você usa o Debian, é o estilo SysV-init. Para fazer isso de maneira limpa, crie um script em /etc/init.d/
que aceite pelo menos start
e stop
como argumento para iniciar e parar seu binário / daemon / tarefa. Para começar, há um script esqueleto, que você pode usar como modelo em /etc/init.d/skeleton
para escrever esse script.