RestartSec tampaknya hanya digunakan jika layanan tertentu itu yang direstart melalui perintah restart systemctl.
Misalnya, saya punya dua layanan, A dan B.
[Unit]
Requires=network-online.target
[Service]
ExecStart=A-stuff
Restart=always
dan
[Unit]
Requires=A.service
After=A.service
[Service]
ExecStart=B-stuff
Restart=always
RestartSec=30
Jika Anda melakukan systemctl restart B, itu berfungsi seperti yang diharapkan ... tetapi jika Anda melakukan systemctl restart A, kedua layanan dihentikan dan segera mulai lagi, tanpa penundaan.
Systemd tampaknya hanya menggunakan nilai konfigurasi untuk satu layanan yang Anda tentukan, dan mengabaikannya untuk setiap dependensi.
Ini tidak biasa seperti kedengarannya. Jika B berbicara ke server jarak jauh, memulai dan menghentikan dengan cepat dapat gagal karena ujung jarak jauh menolak klien. Tetapi memulai ulang A secara langsung akan terjadi setiap kali A diperbarui tanpa perubahan ke B.
Anda mungkin dapat mengatasi ini dengan menambahkan penundaan ke A juga, tetapi Anda tidak perlu PERLU untuk melakukan ini, karena itu merusak isolasi objek dengan membuat A tahu tentang B ketika itu bukan ketergantungan.
systemctl stop myservice && sleep 3 && systemctl start myservice