Como mencionado em outras respostas, os daemontools de Dan Bernstein começaram uma família inteira de conjuntos de ferramentas que compartilham os mesmos mecanismos brutos:
Em praticamente qualquer um deles, um grava um programa run
que executa / é o daemon, e um gerenciador de serviços ou processo de supervisor simplesmente o monitora como um processo filho bifurcado usando o mecanismo Unix e Linux normal. Para o Apache e o MySQL, você está pisando onde um lote de pessoas já trilhou antes, e há muitos exemplos de como executar esses servidores sob o gerenciamento de serviço da família daemontools. Aqui estão apenas alguns:
Chris Down sugere que os conjuntos de ferramentas maiores podem ser inadequados. Este não é realmente o caso. Embora todos esses conjuntos de ferramentas sejam coerentes e autoconsistentes, nenhum deles exige que se use qualquer uma das ferramentas além daquelas necessárias em qualquer situação específica. Pode-se também misturar e combinar. Pode-se usar execlineb
de Laurent Bercot e todos os seus utilitários sob perp, ou meu intérprete de script nosh
e todos os seus utilitários em runit; assim como alguém pode igualmente usar chpst
de Gerrit Pape no meu service-manager
.
Igualmente, você pode executar o Apache e o MySQL a partir do systemd (se você for somente Linux) ou launchd (se você estiver usando o MacOS 10). Um arquivo de configuração launchd é bastante complexo e complicado, em comparação com os outros sistemas mencionados. Os arquivos da unidade systemd, no entanto, estão na mesma ordem de simplicidade que run
scripts:
Existem algumas poucas unidades de serviçomysqld.service
e httpd.service
fabricadas em casa na World Wide Web, em várias coleções de unidades de serviço domésticas.
Todos eles fornecem o substrato básico de iniciar um daemon no bootstrap, parando e iniciando-o sob controle administrador / automatizado enquanto o sistema está rodando, e automaticamente reiniciando-o em vários casos de falha. Xion345 comete o erro de confundir isso com monit. Como você pode ver na resposta xyr, o substrato lá para monitoramento e controle é o sistema do daemon 5 rc
. Poderia igualmente ter sido systemd ou nosh. (Na verdade, se o exemplo do Xion345 tivesse usado o comando service
em vez de tentar executar scripts init.d diretamente, o que não é uma boa ideia para isso e várias outras razões, ele teria funcionado praticamente como está com o systemd , upstart ou nosh.)
Onde monit pertence é na camada acima . monit usa o substrato start / stop / supervision, e monitora o serviço real fornecido , o qual faz além para supervisionar o processo daemon com um supervisor do daemon. Nesta camada encontra-se ferramentas relacionadas, como nagios. (Pode-se facilmente facilmente nagios em um daemon monitorado pela família do daemontools, e fazer com que ele verifique o estado do processo e uptimes via daemontools API. Meu conjunto de ferramentas vem com um plug-in nagios básico para fazer isso.)