Eu instalei o pimd
serviço por meio de apt
. Isso vem com um systemd
arquivo de unidade upstream ( /lib/systemd/system/pimd.service
).
Eu quero que o serviço seja reiniciado quando, por algum motivo, for morto, portanto, desejo adicionar a linha Restart = always
no arquivo da unidade.
No entanto, não quero modificar o arquivo da unidade upstream.
Existe alguma solução alternativa para isso?
Respostas:
Você tem duas opções:
Copie o arquivo da unidade de
/lib/systemd/system/
para/etc/systemd/system/
.E faça suas modificações
/etc/systemd/system/pimd.service
para substituir completamente os arquivos de unidade fornecidos pelo mantenedor do pacote.O comando
systemctl edit --full <service-name>
automatiza isso para você.Você pode alterar ou adicionar definições de configuração específicas para uma unidade, sem precisar modificar os arquivos da unidade, criando
.conf
arquivos em um diretório suspenso,/etc/systemd/system/<unit-name>.<unit-type>.d/
ou seja, crie um
/etc/systemd/system/pimd.service.d/restart.conf
O comando
systemctl edit <service-name>
executa essas etapas para você.Vejo
man systemd.unit
fonte
systemctl edit <service-name>
systemctl edit --full <service-name>
.A documentação do RHEL recomenda duas maneiras:
/etc/systemd/system/[name-goes-here].service.d/config_name.conf
Nesse caso, o arquivo precisaria conter algo como isto:
É
systemctl edit [name-goes-here]
isso que faz, ele cria esse diretório eoverride.conf
dentro dele.Eu tentaria a opção um, mas ambas são opções viáveis. De qualquer maneira, lembre-se de executar
systemctl daemon-reload
depois de fazer as alterações.Documentação do RHEL sobre criação e modificação de arquivos de unidade do sistema
fonte
Considere usar um script para ler a configuração upstream, modificá-la e cuspir no arquivo drop-in.
Por exemplo, eu uso o Chef e aqui está um pedaço de rubi (biblioteca) que analisa o arquivo de unidade marathon systemd para obter o ExecStart original dele
Em seguida, na receita, crio o arquivo drop-in para anexar uma opção ao ExecStart
fonte