Tutorial de Ubuntu 26.04 / Altere serviços com validação e drop-ins

Altere a configuração do serviço registrando o estado original e efetivo, introduzindo uma substituição separada, validando-a e verificando o comportamento real. Recarregar unidades do systemd, recarregar a configuração da aplicação e reiniciar um processo são operações diferentes.

Localize a unidade original e os drop-ins

Identifique a unidade real e inspecione-a com systemctl cat e systemctl show -p FragmentPath -p DropInPaths. Edições diretas em unidades empacotadas sob /usr/lib/systemd/system podem ser substituídas durante atualizações; alterações locais separadas devem ser mantidas sob /etc/systemd/system.

Crie um serviço de laboratório independente

Este laboratório de VM dedicada deixa as aplicações reais do servidor intactas. Verifique se o nome ubuntu-course-lab.service já está em uso nos caminhos de busca do systemd, inclusive arquivos gerados, aliases e drop-ins. Confira também se os caminhos em /etc/systemd/system já existem ou são links simbólicos; se houver qualquer conflito, escolha outro nome e ajuste todos os comandos. Faça a prática sem alterações simultâneas de outros administradores. O modo noclobber ajuda a evitar sobrescrita, mas não substitui essas verificações; pare se a criação falhar.

(
set -eu
sudo sh -c 'set -C; cat > /etc/systemd/system/ubuntu-course-lab.service' <<'EOF'
[Unit]
Description=Ubuntu course configuration lab

[Service]
Type=oneshot
Environment=LAB_MODE=baseline
ExecStart=/usr/bin/printenv LAB_MODE
EOF
sudo systemd-analyze verify /etc/systemd/system/ubuntu-course-lab.service
sudo systemctl daemon-reload
sudo systemctl start ubuntu-course-lab.service
journalctl -u ubuntu-course-lab.service --since '5 minutes ago' --no-pager
)

Verifique a saída baseline no journal e um resultado bem-sucedido. Uma unidade Type=oneshot pode se tornar inativa após a conclusão bem-sucedida; apenas inativa não é falha. Inspecione também systemctl show ubuntu-course-lab.service -p Result.

Altere um valor através de um drop-in

(
set -eu
sudo mkdir -p /etc/systemd/system/ubuntu-course-lab.service.d
sudo sh -c 'set -C; cat > /etc/systemd/system/ubuntu-course-lab.service.d/10-lab.conf' <<'EOF'
[Service]
Environment=LAB_MODE=changed
EOF
sudo systemd-analyze verify /etc/systemd/system/ubuntu-course-lab.service
sudo systemctl daemon-reload
sudo systemctl start ubuntu-course-lab.service
journalctl -u ubuntu-course-lab.service --since '5 minutes ago' --no-pager
)

Mantenha o valor original no unit e use o drop-in para definir changed. Compare a configuração combinada e o novo registro de execução, distinguindo-o das entradas anteriores pelo horário. A verificação da unidade não valida todas as configurações específicas do aplicativo, acesso a arquivos ou resposta da rede.

Diferencie três operações de recarregamento

Comando Função
systemctl daemon-reload Recarrega definições de unidade e dependência do systemd
systemctl reload unit Invoca a operação de recarregamento suportada pelo aplicativo
systemctl restart unit Para e inicia o processo

Por exemplo, valide a configuração do Nginx (lição em inglês) com nginx -t antes de seu recarregamento suportado. Recarregar apenas o systemd não altera o ambiente de um processo existente. Escolha a operação do aplicativo após avaliar o tempo de interrupção e planejar testes de novas conexões.

A referência systemd.unit explica os caminhos de pesquisa de unidade e a precedência de drop-in.

Reverta somente esta alteração

Antes de executar o bloco, confirme que o arquivo indicado continua sendo exatamente o drop-in criado nesta prática; se houver dúvida ou ele tiver sido alterado por outra pessoa, não o remova.

(
set -eu
sudo rm -- /etc/systemd/system/ubuntu-course-lab.service.d/10-lab.conf
sudo systemctl daemon-reload
sudo systemctl start ubuntu-course-lab.service
journalctl -u ubuntu-course-lab.service --since '5 minutes ago' --no-pager
)

Confirme que baseline aparece novamente no novo registro. Este rm remove apenas o drop-in dedicado criado para o exercício. Evite um revert amplo do systemctl que também remova as alterações de outro administrador. Para limpar a própria unidade, verifique sua propriedade e estado inativo, remova apenas aquele arquivo de laboratório e recarregue o systemd.