Os arquivos em /etc/init.d
não devem ser executáveis compilados. Você coloca seu executável compilado em outro lugar, talvez /usr/local/bin
; então você escreve um script de inicialização em /etc/init.d
, que sabe como iniciar e parar o programa compilado. Muitas vezes, isso é tão simples quanto executá-lo em segundo plano para iniciar e matar seu PID (ou seu nome executável usando killall
) para parar. init
chamará o script de inicialização com um único argumento, a palavra start
, stop
, restart
& c .; é responsabilidade do script saber como executar o serviço em si.
Para uma introdução rápida, experimente aqui . Pode haver um exemplo de script de esqueleto no diretório /etc/init.d
que você pode alterar para se adequar ao seu caso.
Como uma nota lateral, que distro você está executando? Muitas distribuições modernas agora executam systemd
em vez de sysvinit
, que usa (por padrão) um arquivo de unidade declarativa em vez de um script de inicialização; Os arquivos da unidade IMO são mais fáceis de escrever. O systemd fornece um modo de compatibilidade sysvinit, portanto, é possível que você o rode. Nesse caso, recomendo escrever um arquivo de unidade em vez de um script.