2016-08-19 6 views
6

के बीच क्या अंतर है systemd सेवा Typeoneshot और simple के बीच क्या अंतर है? यह link टाइमर के लिए oneshot के बजाय simple का उपयोग करने के लिए राज्य करता है। मैं इसे सही ढंग से समझने में सक्षम नहीं हूं।सिस्टमड सर्विस टाइप ऑनशॉट और सरल

उत्तर

14

Type=oneshot सेवा इकाई: पहली प्रक्रिया से बाहर निकलता है जब तक एक शुरुआत के संचालन पर

  • ब्लॉक, और अपने राज्य "को सक्रिय करने" के रूप में सूचित किया जाएगा;

  • एक बार पहली प्रक्रिया से बाहर निकलने के बाद, "सक्रियण" से सीधे "निष्क्रिय" में संक्रमण, जब तक RemainAfterExit=true सेट नहीं होता है (इस मामले में यह कोई प्रक्रिया के साथ "सक्रिय" हो जाता है!);

  • कोई ExecStart= नहीं हो सकता है लेकिन ExecStop= (सिस्टम शटडाउन पर चलाने के लिए चीजों की व्यवस्था के लिए उपयोगी) हो सकता है।

Type=simple सेवा इकाई:

  • एक शुरुआत के संचालन पर ब्लॉक नहीं करता है, (। मैं ई पहली प्रक्रिया बंद forking के बाद "सक्रिय" तुरंत हो जाता है, भले ही यह अभी भी शुरू कर रहा है।!)

  • एक बार पहली प्रक्रिया से बाहर निकलने के बाद, "सक्रिय" से "निष्क्रिय" में संक्रमण (RemainAfterExit= विकल्प नहीं है);

  • आम तौर पर निराश होता है क्योंकि "500 एमएस रनटाइम के बाद दुर्घटनाग्रस्त" से "कॉन्फ़िगरेशन त्रुटि की वजह से प्रारंभ से बाहर निकलने" जैसी स्थितियों को अलग करने का कोई तरीका नहीं है।

दोनों Type=oneshot और Type=simple इकाइयों:

  • पहले प्रक्रिया के किसी भी बच्चों पर ध्यान न दें, तो forking प्रक्रियाओं (नोट के साथ इन विधियों का उपयोग नहीं करते: आप उपयोग कर सकते हैं Type=oneshot साथ KillMode=none, लेकिन केवल करना यदि आप जानते हैं कि आप क्या कर रहे हैं)।
+1

इंटेलफ़ेक्स कहता है कि 'टाइप = ऑनशॉट' सेवा इकाई "में 'ExecStart =' "नहीं हो सकता है। यह सच नहीं है। वास्तव में, 'oneshot' प्रकार की सेवाओं में एकाधिक' ExecStart = 'निर्देश हो सकते हैं। अधिक जानकारी के लिए 'systemd.service' के लिए कोई हालिया मैन पेज देखें। – rlandster

+0

@rlandster: यह "सच नहीं है" क्यों है? [systemd.service (5)] (https://www.freedesktop.org/software/systemd/man/systemd.service.html#ExecStart=) 'ExecStart =' के अंतर्गत आता है: "जब तक टाइप = ऑनशॉट नहीं है, बिल्कुल एक आदेश दिया जाना चाहिए। जब ​​टाइप = ऑनशॉट का उपयोग किया जाता है, तो शून्य या अधिक कमांड निर्दिष्ट किए जा सकते हैं। " – intelfx

-1

सिस्टम के दृष्टिकोण से, Type=simple आग की तरह है और भूल जाओ। Systemd सिर्फ ExecStart= में परिभाषित प्रक्रिया को फोर्क करता है और प्रक्रिया शुरू होने में विफल होने पर भी इसके रास्ते पर जाता है।

+0

'टाइप = सरल 'प्रक्रियाओं को अभी भी systemd द्वारा निगरानी की जाती है, और' पुनरारंभ 'सेटिंग के मान के आधार पर पुनरारंभ किया जाएगा। –

संबंधित मुद्दे