Eu instalei o pimd
serviço por meio de apt
. systemd
Isso vem com um arquivo de unidade upstream ( /lib/systemd/system/pimd.service
).
Desejo que o serviço seja reiniciado quando, por algum motivo, for interrompido, portanto, desejo adicionar a linha Restart = always
no arquivo da unidade.
No entanto, não quero modificar o arquivo de unidade upstream.
Existe alguma solução alternativa para isso?
Você tem duas opções:
Copie o arquivo da unidade de
/lib/systemd/system/
para/etc/systemd/system/
.E então faça suas modificações
/etc/systemd/system/pimd.service
para substituir completamente o(s) arquivo(s) de unidade fornecido(s) 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 ter que modificar os arquivos da unidade, criando
.conf
arquivos em um diretório drop-in,/etc/systemd/system/<unit-name>.<unit-type>.d/
ou seja, criar um
/etc/systemd/system/pimd.service.d/restart.conf
O comando
systemctl edit <service-name>
executa essas etapas para você.Ver
man systemd.unit
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 assim:
Isso é o que
systemctl edit [name-goes-here]
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 forma, lembre-se de executar
systemctl daemon-reload
após fazer as alterações.Documentação do RHEL sobre como criar e modificar arquivos de unidade systemd
Considere o uso de um script para ler a configuração upstream, modificá-la e colocá-la no arquivo drop-in.
Por exemplo, eu uso o Chef e aqui está um pedaço de ruby (biblioteca) que analisa o arquivo de unidade systemd marathon para obter o ExecStart original dele
Em seguida, na receita, crio o arquivo drop-in para anexar uma opção ao ExecStart