O problema foi a localização do arquivo, no servidor Ubuntu ele espera em /etc/systemd/system
, /etc/init.d/
é para arquivos legados.
Eu quero definir um serviço simples para ser iniciado na inicialização, estando no servidor Ubuntu 16.10. Então eu criei um /etc/init.d/mydaemon
De alguma forma eu estraguei tudo entre o upstart e o systemd: no começo, achei que tinha que configurar um serviço iniciante. Então, depois de converter meu arquivo para uma sintaxe upstart, eu corri update-rc.d mydaemon defaults
.
Eu descobri o erro e executei update-rc.d mydaemon remove
, converti para a sintaxe do systemd e executei systemctl enable mydaemon
, mas recebi o erro:
mydaemon.service is not a native service, redirecting to systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable mydaemon
update-rc.d: error: mydaemonDefault-Start contains no runlevels, aborting.
Eu tive o mesmo erro ao portar um script sysv de uma caixa redhat para o Ubuntu. Eu precisava adicionar alguns cabeçalhos ao script
### BEGIN INIT INFO
# Provides: my-service-name
# Required-Start: $all
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop:
# Short-Description: your description here
### END INIT INFO
encontrado em link
Só para adicionar a resposta de @CharlesB - quando cheguei nesse estado, consegui simplesmente mover o arquivo de /etc/init.d/
para /etc/systemd/system/
e executar novamente o comando e ele funcionou corretamente:
sudo mv /etc/init.d/mydaemon /etc/systemd/system/
sudo systemctl enable mydaemon