Aqui estamos novamente para tentar elucidar um pouco sobre o
funcionamento e o que são os daemons, mas apesar do assunto
ser extremamente amplo (devido a sua gama de peculiaridades),
esse artigo irá focar como público alvo os iniciantes. Então,
se você se considera "elite", não recomendo a leitura do que
segue abaixo...
Pois bem... A maioria das distros da atualidade vem, por padrão,
trazendo em sua instalação um conjunto de daemons de controle do
sistema. Por convenção a consoante sufixal "d", quando usada para
denominar um "programa" e/ou "ferramenta" relacionada com algum
serviço ou gama de serviços adjacentes, indica ou tenta indicar
que ele é um daemon. Em outras palavras, usarei o httpd
como exemplo; ele por sua vez quer dizer ou indicar que httpd
representa o daemon HTTP (controle do webserver), assim como
sshd tenta representar ou nos mostrar que ele é o daemon
ssh e assim sucessivamente.
Você deve estar se perguntando agora: "Mas afinal de contas, o
que um daemon faz de verdade?". Então lhes responderei de forma
curta e grossa: ele controla (inicia, reinicia, para e etc) um
serviço provido pelo seu sistema.
Quem já teve a oportunidade de trabalhar com sockets (server side)
deve saber que a maior falha de código que deve ser evitada são os
loops infinitos (sem controle de erro), principalmente se ele roda
em servidores de produção. E é do conhecimento geral que muita
gente deixa loops do tipo 'while (1)' em sockets server - pensando
que dessa forma seu sistema nunca irá cair, pois seu processo
estará rodando. Mas infelizmente essa forma de implementação só
consome memória desnecessária a partir do momento que o server
parar de ouvir de fato, pois muitas vezes (por falha de implementação
do protocolo) o servidor continua rodando, mas para de ouvir
conexões válidas, pois o programa em si está parado em algum loop
infinito.
No caso anterior, como você faria para restartar o serviço? Se
logaria na máquina, mataria o processo e em seguida o subiria
manualmente? Provavelmente não! Dessa forma você perde tempo e
várias noites de sono.
Por causa desses problemas, o conceito dos daemons foram criados,
ou seja, criaram "coisas" que controlam outras "coisas". Imagine
um daemon como um guarda de trânsito quando um sinaleiro não
funciona, ou seja, manualmente ele organiza o fluxo de carros e
chama o pessoal da manutenção do sinaleiro para que o sistema se
normalize e volte a funcionar automaticamente.
[3] Comentário enviado por agk em 06/07/2004 - 14:07h
Bom artigo, gostaria que publicasse agora um falando sobre os conceito de jail (jaulas), já houvi falar em jail para BSD, no linux fala-se de daemons rodando em chroot, isso é a mesma coisa? Tem a mesma finalidade de proteger o sistema de algum bug ou vulnerabilidade do daemon?