O que é um daemon?
Um daemon é um tipo de programa em sistema operacional semelhante ao UNIX que é executado em segundo plano discretamente, em vez de mediante acesso direto de um usuário. Espera ser acionado pelo aparecimento de uma condição ou evento específico.
Normalmente, os sistemas do tipo UNIX executam vários daemons, principalmente para acomodar solicitações de serviços por meio de outros sistemas na rede, para atividades de hardware e também para responder a outros programas.
Exemplos de condições ou ações que podem ativar daemons na atividade podem ser uma data ou hora específica, passagem de um intervalo de tempo descrito, recebimento de uma solicitação da web ou e-mail criado a partir de uma linha de comunicação específica e um arquivo chegando a um diretório específico.
travessia inorder da árvore binária
Não é obrigatório que o perpetrador de uma condição ou ação saiba que o daemon está ouvindo.
No entanto, os programas frequentemente implementariam uma ação apenas porque sabem que ela ativaria um daemon implicitamente.
Um daemon também é chamado de processos em segundo plano. É um programa UNIX ou Linux executado em segundo plano. Quase todo daemon contém nomes que terminam com a letra 'd'. Por exemplo, sshd, gerencia conexões de acesso remoto SSH, ou o daemon httpd que gerencia o servidor Apache. Freqüentemente, o Linux inicia daemons na hora de inicialização.
Vários scripts de shell são salvos dentro do diretório /etc/init.d. Esses scripts são usados para iniciar e parar daemons.
Processos Linux
Normalmente, os daemons são instanciados como processos. Esses processos são as instâncias em execução ou em execução de um programa. Um processo é controlado pelo kernel, que é o núcleo do sistema operacional, e atribui todos os números especiais de identificação do processo.
No Linux, existem principalmente três tipos comuns de processos que são os seguintes:
- Lote
- Interativo
- Demônio
O processo em lote é enviado por meio de uma fila de processos e não está relacionado à linha de comando. Esses processos são adequados para realizar operações recorrentes se o uso do sistema for baixo.
O processo interativo é executado interativamente pelo usuário na linha de comando.
como converter de int para string em java
O daemon é identificado por um sistema como aqueles processos cujo processo pai contém um PID igual a um.
Sempre, define o processo init. O processo init é o processo inicial iniciado quando um sistema Linux é inicializado e permanece no sistema até que ele seja desligado.
O init pode adotar qualquer tipo de processo cujo processo pai termine ou morra sem esperar pelo status do processo filho.
Portanto, a técnica básica para iniciar o daemon é dividir ou bifurcar duas ou uma vez e também permitir que os processos pais terminem enquanto o processo filho começa a implementar sua função geral.
História dos Demônios
Alguns daemons são publicados por scripts de inicialização do System V. Estes são scripts ou programas curtos que podem ser executados automaticamente se o sistema estiver inicializando. Eles podem ser reproduzidos em intervalos ou sobreviver durante a sessão.
Agora, vários daemons são iniciados apenas quando necessário e por um daemon (xinetd) em vez de serem executados continuamente. O xinetd é conhecido como superservidor TCP/IP.
Ele é iniciado no momento da inicialização e também escuta várias portas atribuídas aos processos listados no arquivo de configuração, ou seja, /etc/xinetd.conf ou /etc/inetd.conf.
Manualmente, alguns daemons também podem ser iniciados para serem iniciados pelos programas aplicativos e sistema operacional. Todos os daemons possuem um script individual em vários sistemas operacionais do tipo UNIX, incluindo Linux, com o qual podem ser reiniciados e encerrados.
O gerenciamento desses scripts é implementado de acordo com níveis de execução. O nível de execução pode ser definido como um estado operacional ou de configuração de um sistema que permite apenas a disponibilização de alguns processos selecionados. Começar em um nível de execução distinto pode oferecer suporte à solução de determinados problemas ou questões, incluindo a retificação de erros do sistema.
Pontos-chave dos Daemons
Alguns pontos-chave importantes dos Daemons são explicados abaixo:
- A palavra daemon é tirada da metodologia grega daemon. Estes eram seres sobrenaturais que se situam entre os mortais e os deuses e que possuíam um poder ou conhecimento único.
- Em 1963, o termo daemon foi inicialmente aplicado dentro de um contexto de sistema no projeto pioneiro MAC com a ajuda do IBM 7094.
- Foi inspirado no demônio da termodinâmica e da física de Maxwell, que era um agente abstrato que suportava moléculas de velocidades distintas e trabalhava incansavelmente em segundo plano.
- Depois disso, o termo foi usado para descrever os processos de fundo que funcionavam incansavelmente na implementação das tarefas do sistema.
- O primeiro computador daemon foi um programa que criava backups em fita automaticamente.
- Este termo foi utilizado para uso em computador. Era uma forma abreviada de Disk and Execution MONitor.
- Vários programas chamados serviços, as funções dos daemons no sistema operacional Microsoft Windows. No entanto, a palavra daemon às vezes também é aplicada a esses sistemas.
Implementação de Daemons
Sistemas tipo Unix
O processo do sistema semelhante ao Unix é um daemon se seu processo pai morrer e este daemon for nomeado o processo init (processo número 1) como o processo pai e não contiver nenhum terminal de controle de maneira estritamente técnica.
No entanto, um daemon pode ser qualquer processo em segundo plano, seja ele filho do processo init ou não.
A técnica básica para um procedimento torna-se um daemon no sistema semelhante ao UNIX quando o procedimento é iniciado através da linha de comando ou scripts de inicialização como o script System Starter ou o script init, envolve:
Arquitetura de 32 bits versus 64 bits
- Excluir variáveis desnecessárias através do ambiente opcionalmente.
- Executando como tarefa em segundo plano saindo e bifurcando. Ele permite que o pai do daemon (processo de inicialização ou shell) receba notificações de saída e continue a execução normal.
- Desanexando através da seção de invocação, geralmente realizado por uma operação individual, setsid():
- Dissociando-se através do controle tty.
- Criar uma sessão mais recente e tornar-se o líder da sessão.
- Tornando-se o líder do grupo de processos.
- Se o daemon desejar ter certeza de que não herdará um novo controle tty, ele poderá sair e bifurcar novamente. Isso significa que não há mais nenhum líder de sessão dentro da nova sessão e não pode herdar nenhum controle tty.
- Definir o diretório de trabalho atual como o diretório raiz para que o processo não use nenhum diretório em uso que possa estar em um sistema de arquivos montado.
- Modificando o umask para 0 para permitir create(), open() e outras chamadas do sistema operacional para facilitar sua máscara de permissão e não depender de todo o umask do chamador.
- Redirecionando os descritores de arquivo 0, 1 e 2 para os fluxos padrão (stderr, stdout, stdin) para um arquivo de log ou /dev/null e fechando todos os outros arquivos descritores adquiridos por meio do processo pai.
Quando o processo começa por qualquer daemon de superservidor como systemd, launchd ou inetd, o superservidor implementará essas funções para este processo, exceto aqueles daemons de estilo antigo não transformados em execução no systemd e descritos como servidores de datagramas multithreaded e Type=forking no inetd.
string está vazia
MS DOS
O programa semelhante a um daemon foi executado como software de encerramento e permanência residente (em resumo, TSR) dentro da plataforma Microsoft DOS.
Windows NT
Programas conhecidos como serviços do Windows implementam as funções desses daemons nos sistemas Microsoft Windows NT. Eles são executados como processos e geralmente não interagem com o mouse, o teclado e o monitor. Eles podem ser iniciados com a ajuda do sistema operacional no momento da inicialização.
Os serviços do Windows são interrompidos, iniciados e configurados manualmente pelo Painel de Controle (um programa de configuração/controle dedicado), pelo sistema de script do PowerShell ou pelos comandos net stop e net start, o elemento controlador de serviço do gerenciador de controle de serviço.
Qualquer aplicativo do Windows, entretanto, pode implementar as responsabilidades de um daemon não apenas como um serviço, e alguns daemons do Windows contêm a opção de execução como um processo normal.
macOS clássico e Mac OS
Vários serviços e recursos opcionais foram facilitados pelos arquivos carregados no momento da inicialização que reconstroem o sistema operacional no Mac OS clássico.
Eles foram chamados de painéis de controle e extensões de sistema. As versões posteriores do Mac OS padrão as ampliaram com aplicativos de fundo sem rosto totalmente desenvolvidos.
Esses aplicativos são aplicativos regulares executados em segundo plano. Eles ainda eram especificados como extensões regulares do sistema para o usuário.
macOS é um sistema Unix e usa daemons. O macOS aplica o termo do serviço para designar software que implementa funções escolhidas no menu de serviços, em vez de aplicar esse termo como o Windows faz para daemons.
Funções típicas de daemons
- Execute ações agendadas como cron.
- Monitore sistemas como matriz RAID ou integridade do disco rígido.
- Responda à solicitação da rede e abra a porta de rede (como a porta 80).
Como iniciamos, reiniciamos ou paramos daemons para um prompt de shell?
Precisamos aplicar seus comandos de serviço como abaixo:
service daemon-name-here start service daemon-name-here stop service daemon-name-here restart
No exemplo a seguir, estrelas, reinicie e pare.
service httpd start service httpd stop service httpd restart
Como verificamos a lista de cada daemon em execução?
Para verificar o status de cada daemon instalado, digite:
service - -status-all
Planejando Nosso Daemon
O que o daemon vai fazer?
O daemon deve implementar uma coisa e implementá-la bem. Essa única coisa pode ser tão complicada quanto lidar com muitas caixas de correio em mais de um domínio ou tão fácil quanto ligar para o sendmail para enviá-lo a um administrador e especificar um relatório.
Devemos ter uma ideia melhor do que um daemon deve fazer em qualquer caso. Ele irá interagir com alguns outros daemons que podemos especificar ou não. É também outra coisa a examinar.
ordenação por seleção
Interação
Daemons nunca devem se comunicar com o usuário diretamente por um terminal. Cada comunicação passa por alguns tipos de interface (que podemos ou não precisar especificar), que podem ser tão complicados quanto GUI + GTK ou tão simples quanto um conjunto individual.
A estrutura básica do daemon
Daemon precisa implementar algumas tarefas domésticas de baixo nível para se preparar para o trabalho real quando for inicializado. Envolve algumas etapas que são as seguintes:
- Bifurque um superprocesso (processo pai)
- Modifique a máscara do modo de arquivo (umask)
- Abra registros para gravar
- Faça um ID de sessão especial (abreviado como SID)
- Modifique o diretório de trabalho (atual) para um local seguro
- Fechar descritores de classificação do arquivo
- Digite o código do daemon original