O Que É um Daemon? Processos de Serviço em Segundo Plano
Um daemon é um processo que roda em segundo plano, desacoplado de qualquer terminal, fornecendo um serviço como um banco de dados, servidor web ou agendador.
Muitos dos serviços dos quais um build depende, um banco de dados, um Docker engine, um agendador de jobs, rodam como daemons: processos em segundo plano que iniciam e esperam silenciosamente para fazer seu trabalho. No CI, daemons aparecem quando seus testes precisam de um serviço rodando ao lado deles, e saber como funcionam ajuda a iniciá-los e pará-los de forma limpa.
O que faz um daemon
Um daemon se desacopla do terminal de controle e roda em segundo plano, muitas vezes iniciado no boot. Ele tipicamente escreve em arquivos de log em vez do terminal e espera por requisições ou eventos.
Exemplos de daemons
- Servidores de banco de dados como PostgreSQL e MySQL.
- O Docker engine que roda containers.
- cron, que dispara jobs agendados.
- sshd, que aceita conexões remotas.
Daemons versus processos em primeiro plano
Um processo em primeiro plano segura o terminal e você espera por ele. Um daemon roda de forma independente em segundo plano, então outros comandos podem rodar enquanto ele atende requisições. Convencionalmente, nomes de daemon muitas vezes terminam em d, como sshd ou dockerd.
Iniciando e parando daemons
Um daemon é geralmente iniciado por um gerenciador de serviços ou lançando-o em segundo plano, depois parado enviando-lhe um signal. Scripts devem esperar por um daemon estar pronto antes de usá-lo, ou requisições falham.
Daemons no CI
Quando testes precisam de um banco de dados ou outro serviço, o CI muitas vezes o roda como um daemon (ou um service container) pela duração do job. Uma armadilha comum é falar com o daemon antes de ele estar pronto, então scripts fazem polling de um health check primeiro.
Serviços em runners gerenciados
Os runners da Latchkey podem rodar service containers como daemons ao lado do seu job, e desmontá-los quando o job termina. Esperar por um readiness check antes dos seus testes rodarem evita falhas instáveis de um serviço ainda não iniciado.
Principais conclusões
- Um daemon é um processo em segundo plano que fornece um serviço, desacoplado de um terminal.
- Bancos de dados, o Docker engine e o cron rodam todos como daemons.
- No CI, serviços rodam como daemons; espere pela prontidão antes de usá-los.