No systemd, a operação systemctl restart
tem um comportamento especial em comparação com um par de stop + start:
-
systemctl restart a
- pare b, pare a, inicie a, inicie b (isto é, reinicia as unidades dependentes, tudo na ordem correta) -
systemctl stop a && systemctl start a
- parar b, parar a, iniciar a (isto é, não não lembra sobre as unidades dependentes)
Observe que isso só acontece quando o b.service tem Requires=a.service
. Wants =, After = e Before = não ativam este comportamento especial (mas After=a.service
é muito provavelmente necessário também para ordenar paragens e começar uns contra os outros).
Portanto, para que isso funcione, você provavelmente não precisará executar nada do script de pré-processamento de A e systemctl restart
do script postrm de A se o primeiro argumento for upgrade
e% normalsystemctl stop
+ systemctl start
caso contrário. (Nota: Eu posso estar errado aqui - não um usuário / mantenedor do Debian),