सिस्टम निर्भरता और बूट क्रम


20

प्रक्रियाओं को शुरू करने के लिए मुझे एक बूट ऑर्डर निर्दिष्ट करने की आवश्यकता है। मेरे पास 389 निर्देशिका सर्वर और सांबा फेडोरा 18 पर चल रहे हैं। मैं नेटवर्क सेवाओं को बूट कैसे कर सकता हूं, फिर 389 डीएस, फिर सांबा? क्या फेडोरा में इसका प्रबंधन करने के लिए कोई GUI है?

मैंने सांबा को शुरू करने के लिए सक्षम किया है systemctl enable smb.service। मैंने 389 DS को भी सक्षम किया है systemctl enable dirsrv.target


सिस्टमड को सेवाओं के बीच आदेश की आवश्यकता नहीं होती है, विचार यह है कि सब कुछ समानांतर में शुरू हो और सर्वरों को उपलब्ध होते ही कंवेंशन सौंप दें । डिफ़ॉल्ट स्थापना द्वारा दिया गया कॉन्फ़िगरेशन ठीक होना चाहिए। आपको क्यों लगता है कि आपको किसी आदेश को परिभाषित करना है? क्या कुछ काम करने में विफल रहता है?
वॉनब्रांड

मुझे यह भी ध्यान देना चाहिए, क्योंकि यह वापस आ गया है, कि आप वास्तव में अपने डोमेन नियंत्रक पर फ़ाइल / प्रिंट सेवाएं नहीं चला रहे हैं।
माइकल हैम्पटन

@vonbrand मुझे यह समस्या थी, जहाँ मेरे DHCP सर्वर को स्लैपड अप होने की आवश्यकता थी (क्योंकि इसका विन्यास LDAP निर्देशिका में संग्रहीत किया गया था)। यदि ऐसा नहीं होता, तो डीएचसीपी सर्वर नहीं आएगा।
मैट

जवाबों:


25

systemctl edit smb.serviceनिर्भरता को अद्यतन करने के लिए उपयोग करें ।

After=dirsrv.target - dirsrv.target के बाद smb.service शुरू हो जाएगी।

मजबूती के लिए, (यदि आप इस सामान के साथ छेड़छाड़ कर रहे हैं तो यह मूल्य होगा) आप निम्नलिखित में से कुछ को शामिल करना चाह सकते हैं:

Requires=dirsrv.target- smb.service सक्रिय होने पर dirsrv.target को सक्रिय करें। यदि dirsrv.target विफल रहता है तो smb.service विफल हो जाएगी।

Wants=dirsrv.target- smb.service सक्रिय होने पर dirsrv.target को सक्रिय करें। यदि dirsrv.target विफल रहता है तो smb.service विफल होने का कारण नहीं होगा।

BindsTo=dirsrv.target - यदि dirsrv.target निष्क्रिय है, तो smb.service निष्क्रिय करें।

स्रोत: http://www.freedesktop.org/software/systemd/man/systemd.unit.html

systemd-uiप्रणाली के लिए एक GUI प्रदान करता है। सिस्टेम की स्थिति का एक अच्छा दृश्य देता है, लेकिन आपको अभी भी यूनिट फ़ाइलों को संशोधित करने के लिए एक टेक्स्ट एडिटर का उपयोग करना होगा।


एक मामले में A को B की आवश्यकता होती है , क्या कहेंगे "B" "विफल" हो गया है, ताकि A को प्रारंभ नहीं किया जाएगा? बी का कार्यक्रम एक गैर-शून्य मान लौटाता है?
जॉन वांग

2
नीचा दिखाया गया क्योंकि यह बुरे अभ्यास की सलाह देता है। /usr/lib/systemdजब तक आप डिस्ट्रो मेंटेनर नहीं होते तब तक यूनिट फ़ाइलों के संस्करणों को संपादित न करें या आप अपनी फ़ाइलों को प्रत्येक पैकेज अपडेट पर अधिलेखित होने का आनंद लें। या तो यूनिट फ़ाइल को कॉपी /etc/systemdकरें और फिर संपादित करें, या ड्रॉप-इन फ़ाइल का उपयोग करें (विवरण के लिए systemd.unit (5) देखें)। और भी आसान, बस उपयोग करें systemctl edit smb.serviceजो ड्रॉप-इन फ़ाइल जादू को स्वचालित रूप से करता है!
जेरेमी विससर

3
उत्तर संपादित करने के लिए धन्यवाद! यह चिंताओं को हल करता है, और मैं एक बदलाव में बदल गया हूं। :-)
जेरेमी विज़सर

10

दो काम करें:

  1. /lib/systemd/system/smb.serviceनिर्भरता निर्दिष्ट करने के लिए, यूनिट फ़ाइल को संपादित करें । [unit]खंड एक में शामिल है After=रेखा है जो निर्दिष्ट करता है क्या सेवाओं / लक्ष्यों को इस एक से पहले पहुँच जाना चाहिए।

    After=syslog.target network.target nmb.service winbind.service
    

    इसे इसमें बदलें:

    After=dirsrv.target syslog.target network.target nmb.service winbind.service
    
  2. फेडोरा को एक बग के रूप में इस निर्भरता की रिपोर्ट करें , ताकि इसे भविष्य के रिलीज में शामिल किया जा सके।


यह काम करने के लिए प्रतीत नहीं होता है। सांबा अभी भी 389 से पहले बूट कर रहा है।
डायलन क्लोमपेरेन्स

3
unitफ़ाइलों को संशोधित करने के बाद , आपको आमतौर पर रन करना चाहिएsystemctl daemon-reload
स्कॉटीसियस

2

आपको फ़ाइल Requiresके [Unit] अनुभाग में निर्देश के साथ एक पंक्ति को बदलने या शामिल करने की आवश्यकता हो सकती है /usr/lib/systemd/system/smb.service

Requires=dirsrv.target

तथा

After=dirsrv.target

हालांकि, मैंने इस उत्तर के लिए मतदान किया है, हालांकि, मैं व्यक्तिगत रूप से Wants = dirsrv.target के साथ आवश्यकताएँ = के बजाय जाना चाहूंगा। (सिस्टमट.इनिट (5) वांट्स = के लिए देखें)
आकाशगंगा

2

सेवा फ़ाइल को संशोधित करने के दो विकल्प हैं /usr/lib/systemd/system(देखें उदाहरण 2. विक्रेता सेटिंग को ओवरराइड करना ):

  1. फ़ाइल की प्रतिलिपि बनाएँ /etc/systemd/systemऔर प्रतिलिपि पर संशोधन करें। यह फ़ाइल पूरी तरह से फ़ाइल को ओवरराइड कर देगी /usr/lib

  2. फ़ाइल बनाएँ /etc/systemd/system/smb.service.d/local.conf। फ़ाइल की सामग्री नीचे दिए गए उदाहरण की तरह होनी चाहिए। यह चुनिंदा रूप से "आवश्यक" और "बाद में" विकल्प प्रदान करता है जो विक्रेता द्वारा प्रदान की गई सेवा फ़ाइल में है।

इनमें से प्रत्येक (फ़ाइल को संशोधित करने सहित /usr/lib) फायदे और नुकसान प्रदान करता है। सबसे अच्छा विकल्प सेवा और संशोधनों की प्रकृति पर निर्भर हो सकता है।

हालांकि यह काम कर सकता है, यह केवल "आफ्टर" विकल्प ( [यूनिट] सेक्शन विकल्प देखें ) को जोड़ने के लिए पर्याप्त नहीं है । "आदेश के बाद मैं नियंत्रण करता हूं, लेकिन निर्भरता नहीं।" यदि dirsrv.targetकिसी अन्य तरीके से शुरू नहीं किया गया है, तो एक आदेश निर्दिष्ट करना इसे शुरू नहीं करेगा। "आवश्यक" या "चाहता है" विकल्प dirsrv.targetका उपयोग शुरू करने के लिए मजबूर करेगा ।

[Unit]
Requires=dirsrv.target
After=dirsrv.target

NB: मुझे नहीं पता कि यह दृष्टिकोण तब उपलब्ध था जब यह प्रश्न मूल रूप से पूछा गया था।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.