Recompilando e reiniciando um daemon

0

Estou desenvolvendo um daemon de servidor. Eu já tenho uma versão funcional deste servidor rodando, mas agora eu compilei uma nova versão dele. Como faço para substituir o processo atual pelo novo?

Posso usar apenas service [daemon-name] restart ? Isso interrompe o processo atual e inicia um novo a partir do mesmo executável (agora atualizado)? Ou simplesmente reinicia o mesmo (agora obsoleto) binário?

Posso apenas iniciar a nova versão e esperar que ela substitua a antiga? Ou eles correm em paralelo (não é minha intenção)?

Além disso (embora essa possa ser uma questão completamente diferente), consegui iniciar o servidor atual como um daemon na minha conta, mesmo que eu não seja um administrador. Eu tentei pará-lo, mas isso pede a senha root . Existe uma maneira de fazer isso sem ter que envolver meu administrador de rede?

    
por Wasabi 07.12.2016 / 17:42

1 resposta

1

O comando service é um wrapper usado para executar scripts em /etc/init.d. Se você escreveu um daemon e deseja usar o comando service, será necessário criar um script que aceite iniciar, parar e reiniciar argumentos para gerenciar seu daemon e, em seguida, coloque-o em /etc/init.d. Sua capacidade de iniciar, parar e reiniciar seria definida dentro desse script.

No entanto, com base na sua pergunta, parece que você não tem acesso root à máquina em questão. Nesse caso, você não usaria o comando service . Em vez disso, você pode escrever seu próprio wrapper para fazer isso, ou apenas executá-lo diretamente a partir da linha de comando.

Para responder à sua pergunta sobre como executar a nova versão, primeiro você precisa interromper a que está em execução. Enquanto estiver sendo executado em sua conta, você poderá eliminá-lo sem exigir acesso root. A maneira mais fácil de eliminar um processo em execução pelo nome é com o comando pkill :

pkill -x mydaemon

Uma vez desativado, apenas reinicie seu daemon normalmente. Se você quiser colocar isso em um script, você pode colocá-lo em seu diretório ~ / bin, ou em qualquer outro local que você normalmente usa para armazenar scripts e binários. Seu script pode ser tão simples assim:

#!/bin/bash
pidof mydaemon >/dev/null && pkill -x mydaemon
/home/wasabi/bin/mydaemon
    
por 07.12.2016 / 18:31