'Systemctl अक्षम' का उपयोग किए बिना किसी सेवा को अक्षम कैसे करें


12

एक ऐसी सेवा है जिसे मैं केवल तभी चलाना चाहता हूं जब कोई अन्य सेवा विफल हो जाती है ( [Unit] OnFailure=foo), लेकिन मैं नहीं चाहता कि यह सेवा ( foo) बूट पर स्वचालित रूप से शुरू हो। एक विकल्प चल रहा है systemctl disable foo, लेकिन मैं दूसरे तरीके की तलाश कर रहा हूं।

पृष्ठभूमि: मैं एक OS छवि बना रहा हूं, और मुझे मशीन को बूट करने की आवश्यकता नहीं है, उस कमांड को चलाएं ( systemctl disable foo), फिर अपनी छवि को अंतिम घोषित करने से पहले इसे बंद कर दें।

जवाबों:


4

सभी सेवाएं डिफ़ॉल्ट रूप से "अक्षम" हैं; "इनेबलमेंट" ऑप्ट-इन है।

यदि foo.serviceआपकी कस्टम सेवा है, तो इसे तब तक शुरू नहीं किया जाएगा जब तक कि स्पष्ट रूप से कुछ (जैसे OnFailure=निर्देश) द्वारा खींच नहीं लिया जाता है , और आपको "कुछ भी" अक्षम नहीं करना चाहिए।


तो मूल रूप से आपको "यह कार्यक्षमता मुफ्त में मिलती है" जब तक कि फू पहले सक्षम नहीं किया गया है?
रॉगरडपैक

26

systemctl enable/etc/systemd/system/(सिस्टम डेमॉन के लिए) सिम्बलिंक में हेरफेर करके काम करता है । जब आप enableएक सेवा करते हैं, तो यह अनुभाग की WantedByपंक्तियों को देखता है [Install], और उन .wantsनिर्देशिकाओं में सहानुभूति रखता है ।

systemctl disable इसके विपरीत करता है।

आप बस उन सिम्लिंक को हटा सकते हैं - जो हाथ से करना पूरी तरह से उपयोग करने के बराबर है systemctl disable


यह एक ऐसी सेवा होगी जो अभी तक systemd द्वारा नहीं चलाई गई है (यह कस्टम है), इसलिए उनमें से कोई भी अतिरिक्त सिमलिंक नहीं होगा। मैं अनुमान लगा रहा हूं कि वे पहले बूट पर बनाए जाएंगे?
tshepang

3
@Tshepang यह जब तक आप (, या स्क्रिप्ट में निश्चित रूप से) मैन्युअल रूप से इसे सक्षम सक्षम नहीं किया जाना चाहिए
derobert

1
ओह, मुझे लगा कि यह स्वचालित रूप से सक्षम हो जाएगा (जो कि कुछ ऐसा है जो मैं डेबियन पैकेजों को स्थापित करने की अपेक्षा के लिए आया हूं)। जानकार अच्छा लगा।
tshepang

3
@Tshepang जो कि एक सक्षम करने वाले पैकेज में पोस्टइन स्क्रिप्ट है। या मुझे लगता है कि पैकेज में सीमलिंक को शिपिंग करना सुनिश्चित नहीं है, अगर वे ऐसा करते हैं।
अपमानजनक

4

आप उपयोग कर सकते हैं systemctl start ServiceName.serviceऔर systemctl stop Service.Name.serviceशुरू करते हैं और क्रमश: एक सेवा बंद करने के लिए। इसके विपरीत , systemctl enable ...और systemctl disable ..., स्टार्ट और स्टॉप कमांड केवल वर्तमान सत्र के लिए अंतिम होते हैं, इसलिए जब आप मशीन को रिबूट करते हैं तो परिवर्तन सहेजे नहीं जाएंगे।

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