Здається, RestartSec використовується лише у тому випадку, якщо саме ця послуга перезапускається за допомогою команди restart systemctl.
Наприклад, у мене є дві служби, 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.
Ви, ймовірно, можете обійти це, додавши також затримку до А, але вам цього НЕ ПОТРІБНО робити, оскільки це порушує ізоляцію об'єкта, повідомляючи про B, коли це не залежність.
systemctl stop myservice && sleep 3 && systemctl start myservice