RestartSec parece usarse solo si ese servicio en particular es el que se reinicia a través del comando systemctl restart.
Por ejemplo, tengo dos servicios, A y B.
[Unit]
Requires=network-online.target
[Service]
ExecStart=A-stuff
Restart=always
y
[Unit]
Requires=A.service
After=A.service
[Service]
ExecStart=B-stuff
Restart=always
RestartSec=30
Si realiza un reinicio de systemctl B, funciona como se esperaba ... pero si realiza un reinicio de systemctl A, ambos servicios se detienen y se reinician de inmediato, sin demora.
Aparentemente, Systemd solo está utilizando los valores de configuración para el servicio que especifique e ignorándolos para cualquier dependencia.
Esto no es tan raro como parece. Si B habla con un servidor remoto, el inicio y la detención rápida pueden fallar debido a que el extremo remoto rechaza al cliente. Pero reiniciar A directamente sucederá cada vez que A se actualice sin cambiar a B.
Probablemente pueda evitar esto agregando también el retraso a A, pero no debe NECESITAR hacerlo, ya que interrumpe el aislamiento de objetos al informar a A sobre B cuando no es una dependencia.
systemctl stop myservice && sleep 3 && systemctl start myservice