RestartSec का उपयोग केवल तभी किया जाता है यदि उस विशेष सेवा को सिस्टमटार्ट पुनरारंभ कमांड के माध्यम से पुनरारंभ किया जा रहा है।
उदाहरण के लिए, मेरी दो सेवाएं हैं, ए और बी।
[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 करते हैं, तो दोनों सेवाएं रोक दी जाती हैं और तुरंत बिना किसी देरी के फिर से शुरू कर दिया जाता है।
सिस्टमड स्पष्ट रूप से केवल आपके द्वारा निर्दिष्ट एक सेवा के लिए कॉन्फ़िगरेशन मूल्यों का उपयोग कर रहा है, और किसी भी निर्भरता के लिए उन्हें अनदेखा कर रहा है।
यह उतना असामान्य नहीं है जितना लगता है। यदि B किसी दूरस्थ सर्वर से बात करता है, तो क्लाइंट को अस्वीकार करने वाले दूरस्थ छोर के कारण शुरू करना और जल्दी से विफल हो सकता है। लेकिन A को फिर से शुरू करने से जब भी A को B से बदले बिना अपडेट किया जाता है, तो सीधे होगा।
आप शायद ए के साथ विलंब को जोड़कर इसके चारों ओर काम कर सकते हैं, लेकिन आपको ऐसा करने की आवश्यकता नहीं है, क्योंकि यह बी के बारे में ए पता करके ऑब्जेक्ट अलगाव को तोड़ता है जब यह निर्भरता नहीं है।
systemctl stop myservice && sleep 3 && systemctl start myservice