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.




