RestartSec, кажется, используется только в том случае, если эта конкретная служба перезапускается с помощью команды systemctl restart.
Например, у меня есть две службы, A и B.
[Unit]
Requires=network-online.target
[Service]
ExecStart=A-stuff
Restart=always
и
[Unit]
Requires=A.service
After=A.service
[Service]
ExecStart=B-stuff
Restart=always
RestartSec=30
Если вы перезапускаете systemctl B, он работает как положено ... но если вы перезагружаете systemctl A, обе службы останавливаются и сразу же запускаются снова, без задержки.
Systemd, очевидно, использует только значения конфигурации для одной указанной вами службы и игнорирует их для любых зависимостей.
Это не так необычно, как кажется. Если B говорит с удаленным сервером, быстрый запуск и остановка могут произойти сбой из-за отклонения клиентом удаленного конца. Но перезапуск A будет происходить каждый раз, когда A обновляется без изменения B.
Вы, вероятно, можете обойти это, добавив задержку и к A, но вам НЕ НУЖНО делать этого, поскольку это нарушает изоляцию объекта, давая A знать о B, когда это не зависимость.
systemctl stop myservice && sleep 3 && systemctl start myservice