RestartSec wydaje się być używany tylko wtedy, gdy ta konkretna usługa jest restartowana za pomocą komendy systemctl restart.
Na przykład mam dwie usługi, A i B.
[Unit]
Requires=network-online.target
[Service]
ExecStart=A-stuff
Restart=always
i
[Unit]
Requires=A.service
After=A.service
[Service]
ExecStart=B-stuff
Restart=always
RestartSec=30
Jeśli wykonasz restart systemctl B, zadziała zgodnie z oczekiwaniami ... ale jeśli wykonasz restart systemctl A, obie usługi zostaną zatrzymane i natychmiast ponownie uruchomione, bez opóźnienia.
Systemd najwyraźniej używa tylko wartości konfiguracyjnych dla jednej określonej usługi i ignoruje je dla jakichkolwiek zależności.
To nie jest tak rzadkie, jak się wydaje. Jeśli B rozmawia ze zdalnym serwerem, szybkie uruchamianie i zatrzymywanie może się nie powieść z powodu odrzucenia klienta przez zdalny koniec. Ale ponowne uruchomienie A nastąpi bezpośrednio, gdy A zostanie zaktualizowane bez zmiany na B.
Prawdopodobnie możesz obejść ten problem, dodając opóźnienie również do A, ale nie powinieneś tego POTRZEBOWAĆ, ponieważ przerywa izolację obiektu, informując A o B, gdy nie jest to zależność.
systemctl stop myservice && sleep 3 && systemctl start myservice