Como daemonizar servidores no Ubuntu?

5

Eu tenho alguns servidores no meu Ubuntu que precisam ser daemonized à prova de reinicialização. Como posso fazer isso com o primeiro processo genérico do init? Devo trocar para upstart ou algum outro substituto?

    
por Alex 21.05.2009 / 22:06

6 respostas

3

O sistema SysInit existente trataria disso muito bem. O Ubuntu tem documentos sobre o que eles estão fazendo com eles. Sim, eles estão mudando para upstart .

    
por 21.05.2009 / 22:19
3

Se os seus programas estiverem sendo executados em primeiro plano, sugiro Runit , que é um substituto para os já mencionados daemontools e também é um substituto para o init no estilo Sys-V. No Ubuntu, o Runit está disponível como um pacote e tem os scripts necessários para serem iniciados na inicialização do sistema pelo Upstart.

Usamos o Runit para todos os pacotes não instalados no sistema, como aplicativos Rails, para que não tenhamos que gerenciar scripts de inicialização; nós apenas colocamos o comando startup no script 'run' apropriado, e deixamos ir. Isso simplifica a implantação de novos programas arbitrários que precisam ser iniciados no momento da inicialização e é um sistema muito robusto e confiável, evitando a necessidade de gerenciar PID e arquivos de bloqueio, já que o Runit lida com isso.

    
por 01.06.2009 / 07:30
2

Daemontools é absolutamente incrível para esse tipo de coisa. O KISS-grade é simples, robusto e incentiva boas práticas em áreas relacionadas (registro, etc.).

    
por 22.05.2009 / 03:23
0

Você pode usar o xinetd para isso, se o processo for baseado em rede. Caso contrário, o upstart e o sysvinit são suas ferramentas.

    
por 21.05.2009 / 23:16
0

daemonize: www.clapper.org/software/daemonize/ pode lidar com isso envolvendo seu código em um wrapper C que daemoniza antes de executar.

Você também pode simplesmente adicioná-los ao / etc / inittab. Muitos vão (talvez com razão) dizer que isso é mal porque ninguém vai pensar em olhar para lá, eu vi sistemas de produção que usam essa técnica e a verdade é que funciona bem.

Talvez você possa ver também o monit, pode certificar-se de que os processos estão sendo executados e reiniciá-los, se necessário. Foi construído com o ambiente Linux-HA em mente.

Normalmente, faço um novo script de inicialização para cada novo processo, mas normalmente não implante 4 ou 5 scripts de uma só vez. Talvez pense em como eles são estruturados e os coloque em um script de inicialização, que é o serviço que eles fornecem.

    
por 01.06.2009 / 09:38
0

"@ reboot" é uma macro válida no daemon cron padrão do Ubuntu (vixie-cron 4.x se bem me lembro). Então, lançar um daemon pode ser tão simples quanto

crontab -e
@reboot /usr/local/bin/daemon

Isso fará com que seu daemon apareça após uma reinicialização, mas presumirá que seu daemon não morra por conta própria. Você também pode fazer uso de "keep-one-running", que eu acho que vai ser um pacote padrão incluído a partir de 11.10 ("@reboot / usr / bin / keep-one-running / usr / local / bin / daemon" ).

edite - ah, pergunta antiga que reapareceu na guia ativa por qualquer motivo ...

    
por 13.10.2011 / 15:02