Dependências e ordem de inicialização do Systemd

17

Eu preciso especificar uma ordem de inicialização para os processos começarem. Eu tenho 389 Directory Server e Samba em execução no Fedora 18. Como posso ter os serviços de rede de inicialização, em seguida, 389 DS, em seguida, o Samba? Existe uma GUI para gerenciar isso no Fedora?

Eu habilitei o Samba para começar com systemctl enable smb.service . Eu também habilitei 389 DS com systemctl enable dirsrv.target .

    
por Dylan Klomparens 26.02.2013 / 20:22

4 respostas

21

Você pode atualizar o arquivo da unidade /usr/lib/systemd/sytem/smb.service para manipular dependências.

After=dirsrv.target - Irá garantir que o smb.service seja iniciado após o dirsrv.target.

Para robustez, (que valerá a pena se você estiver mexendo com essas coisas), você também pode incluir alguns dos seguintes itens:

Requires=dirsrv.target - Ative o dirsrv.target quando o smb.service estiver ativado. Fará com que o smb.service falhe se o dirsrv.target falhar.

Wants=dirsrv.target - Ative o dirsrv.target quando o smb.service estiver ativado. Não fará com que o smb.service falhe se o dirsrv.target falhar.

BindsTo=dirsrv.target - Se o dirsrv.target estiver desativado, desative smb.service.

Fonte: link

systemd-ui fornece uma GUI para o systemd. Dá uma boa visão do estado do systemd, mas você ainda terá que usar um editor de texto para modificar os arquivos da unidade.

    
por 30.09.2015 / 06:53
8

Faça duas coisas:

  1. Edite o arquivo /lib/systemd/system/smb.service unit para especificar a dependência. A seção [unit] contém uma linha After= que especifica quais serviços / destinos devem ser alcançados antes deste.

    After=syslog.target network.target nmb.service winbind.service
    

    Altere para:

    After=dirsrv.target syslog.target network.target nmb.service winbind.service
    
  2. Reporte esta dependência de volta ao Fedora como um bug , para que possa ser incorporada em versões futuras.

por 26.02.2013 / 21:49
1

talvez seja necessário alterar ou incluir uma linha com a diretiva Requires na seção [Unit] do arquivo /usr/lib/systemd/system/smb.service .

Requires=dirsrv.target

e

After=dirsrv.target
    
por 29.07.2014 / 23:21
1

Existem duas alternativas para modificar o arquivo de serviço em /usr/lib/systemd/system (consulte Exemplo 2 Substituindo as configurações do fornecedor :

  1. Copie o arquivo para /etc/systemd/system e execute as modificações na cópia. Este arquivo irá substituir completamente o arquivo em /usr/lib .

  2. Crie o arquivo /etc/systemd/system/smb.service.d/local.conf . O conteúdo do arquivo deve ser semelhante ao exemplo abaixo. Isso substitui seletivamente as opções "Requer" e "Depois" no arquivo de serviço fornecido pelo fornecedor.

Cada um deles (incluindo a modificação do arquivo em /usr/lib ) oferece vantagens e desvantagens. A melhor escolha pode depender do serviço e da natureza das modificações.

Embora possa funcionar, não é suficiente adicionar apenas a opção "Depois" (consulte Opções da seção [Unit] ). "After" controla a ordem, mas não as dependências. Se dirsrv.target não for iniciado de alguma outra forma, especificar um pedido não será iniciado. O uso da opção "Requer" ou "Deseja" forçará o dirsrv.target a ser iniciado.

[Unit]
Requires=dirsrv.target
After=dirsrv.target

NB: Não sei se essa abordagem estava disponível quando essa pergunta foi feita originalmente.

    
por 18.09.2016 / 06:59