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),