मैंने सिस्टमड सर्विस मैनपेज को कुछ बार पढ़ा है, लेकिन मैं अभी भी एक बुनियादी सिस्टमड पैटर्न का पता नहीं लगा सकता:
मैं एक बार स्टार्टअप प्रक्रिया (जैसे डॉकटर कंटेनर, या ड्राइव को प्रारूपित करना) को सफलतापूर्वक पूरा करना चाहता हूं। लेकिन अगर मैं इसके लिए Type = oneshot का उपयोग करता हूं, तो मैं Restart = on-विफलता का उपयोग नहीं कर सकता हूं, और यदि यह विफल रहता है, तो यह नौकरी को वापस नहीं लेगा। क्या में यहां कुछ भूल रहा हूँ?
मैंने Restart = on-विफलता के साथ टाइप = सिंपल सेट करने की भी कोशिश की, लेकिन कई मामलों में मुझे निम्नलिखित व्यवहार (मैनपेज से) की आवश्यकता होती है जो ऑनशॉट सेवाएं देते हैं:
Oneshot का व्यवहार सरल के समान है; हालाँकि, यह अपेक्षित है कि सिस्टम को फॉलो-अप इकाइयों को शुरू करने से पहले प्रक्रिया से बाहर निकलना होगा।
अपडेट:
Restart=सेटिंग FailureAction=[self.unit](इकाई के नाम के साथ [self.unit) को प्रतिस्थापित करके उसी चीज़ को प्राप्त करने में सक्षम हो सकता है । यह हैकरी की तरह है, लेकिन कम से कम स्पष्ट और अनुसरण करने में आसान है।
FailureActionसमान मान लेता है StartLimitAction, और सभी को छोड़कर noneकिसी प्रकार का बंद ट्रिगर होता है।
Restartऔर लपेटनाmy_cmdहै:ExecStart=/bin/sh -c 'while ! my_cmd; do sleep 1; done'कुछ उचितTimeoutStartSecमूल्य के साथ।