Existe uma maneira “padrão” de fazer daemon no Debian?

17

Eu preciso criar um daemon a partir do aplicativo no Debian. Existe alguma ferramenta padrão para isso no Debian como "upstart" no Ubuntu? Eu preciso apenas de comandos start-stop, para iniciar um programa como um daemon com algumas opções e um arquivo pid e matá-lo com o arquivo pid.

Eu olhei para o init.d mas parece que são para o lançamento na inicialização. Eu quero iniciar meu daemon manualmente.

    
por Kuroki Kaze 26.04.2010 / 16:07

3 respostas

18

Você pode criar seu daemon manualmente seguindo o arquivo /etc/init.d/skeleton no Debian.

Você pode usar /usr/bin/service para iniciar $ sudo service yourdaemon start e sstop $ sudo service yourdaemon stop do seu daemon.

Contanto que você não vincule seu script a nenhum dos diretórios /etc/rc?.d , ele não será iniciado na inicialização.

Por outro lado, você pode querer olhar daemontools , que não é padrão no debian, mas tem algumas interessantes recursos.

    
por 26.04.2010 / 16:27
3

Debian (e Ubuntu) tem o programa de ajuda start-stop-daemon que é usado nos scripts init. Tem algumas opções para iniciar e rastrear daemons. Você pode simplesmente escrever um wrapper em torno dele, por exemplo,

case $1 in
start) start-stop-daemon --start --exec /my/exec/prog --pidfile /my/pid/file --background
       ;;
stop)  start-stop-daemon --stop --pidfile /my/pid/file 
       ;;
esac
    
por 26.04.2010 / 16:41
2

Para daemonizar um processo para o Debian corretamente, você precisará executar várias etapas, incluindo segregar o processo de controle, redefinir o IO e criar um arquivo de id do processo para ser executado de maneira agradável. Você pode usar algo como o programa daemon do pacote com o mesmo nome para fazer isso para você. Se é isso que você queria fazer, a resposta pode ser encontrada aqui no StackOverflow: link

O comando upstart é mais parecido com o comando invoke-rc.d do Debian ou com o comando service do pacote sysvinit-utils. Eles esperam trabalhar com scripts init em /etc/init.d. É padrão no Debian criar um daqueles para o seu pacote e fazer com que ele use o programa start-stop-daemon como você pode ver no exemplo /etc/init.d/skeleton.

O fato de você criar um script /etc/init.d/myservice não significa que ele precise ser iniciado automaticamente. Você pode ajustar os runlevels nos quais ele para e inicia automaticamente usando uma ferramenta como update-rc.d. Isso é descrito com mais detalhes em Desabilitar um serviço de iniciar em todos os runlevels?

    
por 09.04.2014 / 21:15