Apresentamos o gerenciador de sistemas GNU Shepherd 1.0.0 (anteriormente dmd), que combina as funcionalidades de um sistema de inicialização e ferramentas para gerenciar serviços do sistema. Ressalta-se que a atribuição do número 1.0 após 21 anos de desenvolvimento marcou o reconhecimento da prontidão do projeto e sua conformidade com as exigências funcionais dos sistemas de inicialização e gerenciadores de serviços modernos.
O projeto é desenvolvido por desenvolvedores da distribuição GNU Guix System como uma alternativa ao sistema de inicialização SysV-init, suportando dependências. O daemon gerenciador e as utilidades do Shepherd foram escritos na linguagem Guile (uma das implementações da linguagem Scheme), que também é utilizada para definir configurações e parâmetros de inicialização dos serviços. O Shepherd já está em uso na distribuição GNU Guix System e também é direcionado para uso no GNU/Hurd, mas pode operar em qualquer sistema operacional compatível com POSIX para o qual a linguagem Guile esteja disponível.
O Shepherd realiza o trabalho de iniciar e parar serviços, levando em consideração as inter-relações entre os serviços, definindo e iniciando dinamicamente serviços dos quais um serviço selecionado depende. O Shepherd também suporta a definição de conflitos entre serviços e evita sua execução simultânea. O projeto pode ser utilizado tanto como o sistema de inicialização principal (init com PID 1) quanto de forma isolada para gerenciar processos em segundo plano de usuários individuais (por exemplo, para iniciar tor, privoxy, mcron, etc.) com execução sob os direitos desses usuários.
As principais novidades do GNU Shepherd 1.0.0:
- Adicionada a suporte a serviços que executam comandos ou código em Scheme periodicamente conforme um cronograma especificado.
- No comando "herd status SERVICE" foi implementada a exibição de informações de alto nível sobre os serviços, como PID, comando e endereços onde as solicitações de rede são recebidas, bem como um resumo das mensagens recentemente adicionadas ao log. Além disso, este comando agora mostra ações do usuário aplicáveis ao serviço e informa sobre a presença de um serviço substituto, que será aplicado após a reinicialização do serviço atual.
- O comando "herd status root" não é mais um sinônimo de "herd status" e exibe informações sobre o processo raiz do shepherd.
- Para a plataforma Linux, foi disponibilizada a possibilidade de reinicialização utilizando o mecanismo kexec ("reboot --kexec") para substituir o núcleo do Linux sem uma reinicialização física.
- Adicionado o serviço de rotação de logs, responsável pela rotação periódica dos logs e pela remoção de logs obsoletos.
- Adicionado o serviço system-log, que pode ser utilizado como uma substituição para o tradicional sistema syslogd.
- Adicionado o serviço timer para agendar comandos para serem executados em um horário específico, similar à utilidade "at". Por exemplo, "herd schedule timer at 07:00 -- mpg123 alarm.mp3".
- Adicionado o serviço transient para execução de comandos em segundo plano, semelhante à utilidade systemd-run. Por exemplo, "herd spawn transient -d $PWD -- make -j4".
Fonte: opennet.ru
