Como faço para daemonificar meu daemon?

3

Como parte do sistema Ubuntu Accomplishments, eu tenho um daemon que roda tão bem quanto um cliente que se conecta a ele. O daemon é escrito em Python (usando Twisted) e fornece um serviço dbus e um meio de processar solicitações dos clientes.

Neste momento, o daemon é apenas um programa que eu executo antes de executar o cliente e configura o serviço dbus e fornece uma API que pode ser usada pelos clientes.

Eu quero transformar isso em algo que possa ser instalado e executado como um serviço de sistema para a sessão do usuário (por exemplo, iniciando na inicialização) e fornecendo um meio de iniciá-lo e interrompê-lo, etc.

O problema é que não tenho certeza do que preciso fazer para daemonificar corretamente para que possa ser executado como este serviço. Eu queria perguntar se os outros podem fornecer alguma orientação. Algumas coisas que preciso perguntar:

  • Como posso tratá-lo como um serviço que é executado para o serviço do usuário atual (não um serviço do sistema agora)?
  • Como posso garantir que posso iniciar, parar e reiniciar este serviço de sessão?
  • Ao empacotar isso, como posso garantir que ele seja instalado como um serviço para a sessão do usuário e iniciado no login, etc.?

Ao responder, se você puder me indicar exemplos específicos ou soluções que eu preciso implementar, isso seria útil. : -)

Obrigado!

    
por jonobacon 24.02.2012 / 23:37

2 respostas

1

Encontrei vários procedimentos apenas executando uma pesquisa no Google:

link

link

link

link

Espero que eles possam ajudá-lo no seu caminho.

    
por Tim 24.02.2012 / 23:50
1

Um daemon é basicamente um programa sem interação direta com o usuário ... Portanto, não há nada realmente específico sobre isso. No entanto, você tem que tomar cuidado com alguns pontos importantes:

  • qualquer saída ou log deve ir para o syslog, não para a saída padrão
  • na inicialização, crie um arquivo pid sob / var / run. E desmarque isso no desligamento.
  • você tem que escrever um arquivo de supervisão de serviço, para ser localizado em /etc/init.d (scripts para daemon existente são uma boa fonte de inspiração). Este script geralmente tem que iniciar o daemon sob o usuário certo, fornecer os arquivos de configuração corretos e assim por diante.
  • seu processo pode começar com uma bifurcação, para desanexar do processo de chamada, mas não tenho muita certeza sobre isso, especialmente para um programa python.
por Rémi 16.04.2014 / 22:57