Lançamento do sistema init GNU Shepherd 0.9

Dois anos após a formação do último lançamento significativo, foi publicado o gerenciador de serviços GNU Shepherd 0.9 (anteriormente dmd), que está sendo desenvolvido pelos desenvolvedores da distribuição GNU Guix System como uma alternativa ao sistema de inicialização SysV-init que suporta dependências . O daemon de controle e utilitários Shepherd são escritos na linguagem Guile (uma das implementações da linguagem Scheme), que também é usada para definir configurações e parâmetros para iniciar serviços. Shepherd já é usado na distribuição GuixSD GNU/Linux e também é destinado ao uso em GNU/Hurd, mas pode ser executado em qualquer sistema operacional compatível com POSIX para o qual a linguagem Guile esteja disponível.

Shepherd faz o trabalho de iniciar e interromper serviços levando em consideração as relações entre os serviços, identificando e iniciando dinamicamente os serviços dos quais depende o serviço selecionado. Shepherd também oferece suporte à detecção de conflitos entre serviços e à prevenção de sua execução simultânea. O projeto pode ser usado tanto como o sistema de inicialização principal (init com PID 1) quanto em um formulário separado para gerenciar processos em segundo plano de usuários individuais (por exemplo, para executar tor, privoxy, mcron, etc.) com execução com direitos desses usuários.

Principais inovações:

  • É implementado o conceito de serviços temporários (transitórios), desabilitados automaticamente após a conclusão devido ao encerramento do processo ou chamada do método “stop”, que pode ser necessário para serviços sintetizados que não podem ser reiniciados após o desligamento.
  • Para criar serviços semelhantes ao inetd, o procedimento “make-inetd-constructor” foi adicionado.
  • Para criar serviços que são ativados durante a atividade da rede (no estilo de ativação do soquete systemd), o procedimento “make-systemd-constructor” foi adicionado.
  • Adicionado procedimento para iniciar um serviço em segundo plano - “start-in-the-background”.
  • Adicionados parâmetros ":supplementary-groups", "#:create-session" e "#:resource-limits" à rotina "make-forkexec-constructor".
  • Habilitada operação sem bloqueio enquanto espera por arquivos PID.
  • Para serviços sem o parâmetro “#:log-file”, a saída para syslog é fornecida, e para serviços com o parâmetro #:log-file, o log é gravado em um arquivo separado indicando o horário das gravações. Os logs do processo pastor sem privilégios são armazenados no diretório $XDG_DATA_DIR.
  • O suporte para construção com Guile 2.0 foi descontinuado. Problemas ao usar o Guile versões 3.0.5-3.0.7 foram resolvidos.
  • A biblioteca Fibers 1.1.0 ou mais recente agora é necessária para funcionar.

Fonte: opennet.ru

Adicionar um comentário