Eu instalei ddns dinâmicos no-ip seguindo este guia: https://www.noip.com/support/knowledgebase/installing-the-linux-dynamic-update-client/
Eu faço o serviço rodar por
sudo /usr/local/bin/noip2
No entanto, quero que o serviço inicie na inicialização, tentei adicionar o seguinte script a /etc/init.d/noip2.sh
#######################################################
#! /bin/sh
# . /etc/rc.d/init.d/functions # uncomment/modify for your killproc
case "$1" in
start)
echo "Starting noip2."
/usr/local/bin/noip2
;;
stop)
echo -n "Shutting down noip2."
killproc -TERM /usr/local/bin/noip2
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
exit 0
#######################################################
Seguido por:
sudo chmod +x /etc/init.d/noip2.sh
sudo update-rc.d noip2.sh defaults
Agora devo ser capaz de iniciar o serviço com
sudo service noip2 start
Mas eu não sou. Quando executo journalctl -xe
recebo o seguinte:
-- Unit noip2.service has begun starting up.
Nov 03 12:36:11 media systemd[3111]: noip2.service: Failed to execute command: Exec format error
Nov 03 12:36:11 media systemd[3111]: noip2.service: Failed at step EXEC spawning /etc/init.d/noip2.sh: Exec format error
-- Subject: Process /etc/init.d/noip2.sh could not be executed
-- Defined-By: systemd
-- Support: http://www.ubuntu.com/support
--
-- The process /etc/init.d/noip2.sh could not be executed and failed.
--
-- The error number returned by this process is 8.
Nov 03 12:36:11 media systemd[1]: noip2.service: Control process exited, code=exited status=203
Nov 03 12:36:11 media systemd[1]: noip2.service: Failed with result 'exit-code'.
Nov 03 12:36:11 media systemd[1]: Failed to start noip2.service.
-- Subject: Unit noip2.service has failed
-- Defined-By: systemd
-- Support: http://www.ubuntu.com/support
Informações atualizadas para o usuário PerDuck: Recebo os seguintes erros ao tentar sua solução... :( Tentei adicionar
RestartSec=30
Pelo menos continua tentando agora, mas ainda não inicia. Ainda posso iniciá-lo com sudo /usr/local/bin/noip2
Os erros:
Nov 03 23:26:42 media systemd[1]: noip2.service: Service hold-off time over, scheduling restart.
Nov 03 23:26:42 media systemd[1]: noip2.service: Scheduled restart job, restart counter is at 5.
Nov 03 23:26:42 media systemd[1]: Stopped noip2 service.
Nov 03 23:26:42 media systemd[1]: noip2.service: Start request repeated too quickly.
Nov 03 23:26:42 media systemd[1]: noip2.service: Failed with result 'start-limit-hit'.
Nov 03 23:26:42 media systemd[1]: Failed to start noip2 service.
Desde o Ubuntu 15.04, a maneira padrão de controlar processos em segundo plano (e muito, muito mais) é
systemd
. Sugiro mudar do seuinit.d
script para umasystemd
unidade :Crie o arquivo
/etc/systemd/system/noip2.service
com o seguinte conteúdo (e solte seusinit.d
scripts):Em seguida, emita
para
systemd
alertar sobre a nova unidade ( armazena emsystemd
cache os arquivos da unidade e este comando faz com quesystemd
reconsidere seu cache).Agora você pode tentar iniciar e parar sua unidade e ver seu status:
Para que a unidade seja iniciada no momento da inicialização, você precisa ativá -la:
Para desativar o início automático no momento da inicialização, você deve desativar a unidade:
Na maioria das vezes, cinco comandos são suficientes para controlar o comportamento de uma unidade:
Você também pode ativar o início automático e iniciar a unidade imediatamente ou desativar o início automático e pará-lo imediatamente:
Atualizar
Algumas pesquisas revelaram
noip2
que ele é executado como um daemon , ou seja, quando você o inicia, ele cria outro processo que é executado em segundo plano (chamado de bifurcação ) e o processo em primeiro plano imediatamente retorna (sai). É por isso que o script init.d e a unidade systemd falharam: eles começaramnoip2
apenas para vê-lo sair imediatamente. Portanto, o systemd tentou reiniciá-lo repetidamente sem sucesso. (Por padrão, o systemd reinicia um processo no máximo 5 vezes em 10 segundos ou mais antes de desistir e deixá-lo em estado de falha.)Para informar ao systemd que a unidade é do tipo bifurcação , adicione a linha
para a
[Service]
seção como acabei de fazer no trecho acima. Isso informa ao systemd para esperar que o processo principal retorne imediatamente, mas, em vez disso, observe o processo gerado (bifurcado) pornoip2
.