जवाबों:
जैसा कि हेमेयेल ने टिप्पणी में उल्लेख किया है, मैन पेज आपके प्रश्न का उत्तर देता है। वेब से:
= चाहता है
आवश्यकताएँ का एक कमजोर संस्करण =। इस इकाई में सूचीबद्ध इकाइयाँ शुरू की जाएंगी यदि विन्यास इकाई है। हालाँकि, यदि सूचीबद्ध इकाइयाँ शुरू होने में विफल रहती हैं या उन्हें लेनदेन में जोड़ा नहीं जा सकता है, तो इससे लेनदेन की वैधता पर कोई प्रभाव नहीं पड़ता है। यह एक इकाई के स्टार्ट-अप को दूसरी इकाई के स्टार्ट-अप के लिए अनुशंसित तरीका है।
और आवश्यकता है: =
अन्य इकाइयों पर आवश्यकता निर्भरता को कॉन्फ़िगर करता है। यदि यह इकाई सक्रिय हो जाती है, तो यहां सूचीबद्ध इकाइयाँ भी सक्रिय हो जाएंगी। यदि अन्य इकाइयों में से एक निष्क्रिय हो जाती है या इसकी सक्रियता विफल हो जाती है, तो यह इकाई निष्क्रिय हो जाएगी। यह विकल्प एक से अधिक बार निर्दिष्ट किया जा सकता है या एक से अधिक स्थान-पृथक इकाइयों को एक विकल्प में निर्दिष्ट किया जा सकता है जिसमें सभी सूचीबद्ध नामों के लिए मामले की आवश्यकता निर्भरताएं बनाई जाएंगी। ध्यान दें कि आवश्यकता निर्भरता उस क्रम को प्रभावित नहीं करती है जिसमें सेवाएं शुरू या बंद की जाती हैं। इसे बाद में = या इससे पहले = विकल्पों के साथ स्वतंत्र रूप से कॉन्फ़िगर किया जाना है। यदि एक इकाई foo.service को एक इकाई बार की आवश्यकता होती है। आवश्यकता के अनुरूप कॉन्फ़िगर किया गया है = और कोई आदेश बाद = या इससे पहले = के साथ कॉन्फ़िगर नहीं किया गया है, तो दोनों इकाइयों को एक साथ और बिना किसी देरी के शुरू किया जाएगा यदि foo.service सक्रिय है। अक्सर,
ध्यान दें कि यह निर्भरता प्रकार का मतलब यह नहीं है कि जब यह इकाई चल रही है तो दूसरी इकाई को हमेशा सक्रिय स्थिति में रहना होगा। विशेष रूप से: विफल होने वाली स्थिति जांच (जैसे सशर्तपाठ्यवादक =, सशर्तपाठ्यवादक =, ... - नीचे देखें) असफल होने के लिए उस पर निर्भरता = के साथ एक इकाई की शुरुआत का कारण नहीं बनती है। इसके अलावा, कुछ इकाई प्रकार अपने दम पर निष्क्रिय हो सकते हैं (उदाहरण के लिए, एक सेवा प्रक्रिया स्वच्छ रूप से बाहर निकलने का निर्णय ले सकती है, या एक उपकरण को उपयोगकर्ता द्वारा अनप्लग किया जा सकता है), जिसके लिए आवश्यक = निर्भरता रखने वाली इकाइयों को प्रचारित नहीं किया जाता है। बाद में = यह सुनिश्चित करने के लिए कि एक इकाई सक्रिय अवस्था में एक विशिष्ट अन्य इकाई के बिना कभी भी सक्रिय अवस्था में नहीं हो सकती है (नीचे देखें) के साथ मिलकर BindsTo = निर्भरता प्रकार का उपयोग करें।
आपकी सेवा केवल तभी शुरू होगी जब मल्टी-user.target पहुँच गया है (मुझे नहीं पता कि क्या होता है अगर आप उस लक्ष्य को जोड़ने का प्रयास करते हैं?), और systemd आपकी सेवा से पहले प्रदर्शन-manager.service शुरू करने का प्रयास करेगा । । यदि डिस्प्ले-मेनेजर.सेवर जो भी कारण से विफल हो जाता है, आपकी सेवा अभी भी शुरू की जाएगी (इसलिए यदि आपको वास्तव में डिस्प्ले-मैनेजर की आवश्यकता है, तो उसके Requires=
लिए उपयोग करें )। यदि बहु-user.target हालांकि नहीं पहुंची है, तो आपकी सेवा लॉन्च नहीं की जाएगी।
आपकी सेवा क्या है? क्या यह एक कियोस्क प्रणाली है? Intuitively मैं तुम्हें (ताकि अपने स्टार्टअप पर शुरू की), और है यह सख्ती पर निर्भर multi-user.target के लिए आपकी सेवा में जोड़ना चाहते हैं लगता था प्रदर्शन-manager.service के माध्यम से Requires=display-manager.service
। लेकिन यह सिर्फ जंगली अनुमान है।
हमारे सर्वर परिनियोजन LDAP का उपयोग करता है जिसमें सभी उपयोगकर्ता आईडी और ऑटोमाउंट मैप हैं। उपयोगकर्ता होम डायरेक्टरी एनएफएस माउंटेड हैं, और उपयोगकर्ता आमतौर पर अपने होम डाइरेक्टरी में निष्पादन योग्य कोड के साथ @reboot cronjobs बनाते हैं। हम भी कैश के लिए sssd का उपयोग करते हैं। कहने की जरूरत नहीं है, इस विन्यास के लिए कार्य करने के लिए एक नियतकालिक बूट ऑर्डर प्रदान करने में सक्षम होने पर हमारी उच्च निर्भरता है। हमने एक बहुत ही रसीला सिस्टमड विन्यास विकसित किया है, और "सेक्शन" और "सेक्शन" विकल्पों के बीच एक अस्पष्ट बारीकियों की खोज की है।
यदि आपके पास बूट के दौरान किसी सेवा की विफलता है, और उस सेवा पर "पुनः आरंभ" के साथ एक और सेवा निर्भर है, तो सेवा विकल्प के रूप में "पुनरारंभ = हमेशा" सेट के साथ, उस निर्भर सेवा को पुनरारंभ नहीं किया जाएगा। यदि, हालांकि, आपके पास विकल्प के रूप में "चाहता है" है, तो आश्रित सेवा अपेक्षा के अनुसार फिर से शुरू हो जाएगी।
man systemd.unit