"नकाबपोश" राज्य में कुछ सिस्टमड सेवाएं क्यों हैं?


42

जब मैं कमांड चलाता हूं sudo systemctl list-unit-files(मुझे लगता है कि सुडो वैकल्पिक है), मुझे आउटपुट मिलता है जो सभी सेवाओं और उनकी स्थिति को दर्शाता है।

यहाँ मेरी मशीन से एक स्निपेट है:

UNIT FILE                                  STATE
...
debian-fixup.service                       static  
debug-shell.service                        disabled
display-manager.service                    enabled 
dns-clean.service                          enabled 
dsmcad.service                             enabled 
emergency.service                          static  
failsafe-x.service                         static  
friendly-recovery.service                  masked  
fuse.service                               masked  
gdm.service                                masked  
getty-static.service                       static  
getty@.service                             enabled 
gpsd.service                               indirect
gpsdctl@.service                           static  
gpu-manager.service                        enabled 
halt-local.service                         static  
halt.service                               masked  
hostname.service                           masked
...

मुझे आश्चर्य है कि कुछ सेवाएं "नकाबपोश" राज्य में क्यों हैं। मुझे लगता है कि इसका मतलब है, "यह 'अक्षम करने' से बेहतर है, क्योंकि यह सेवा न तो शुरू की जा सकती है, न ही हाथ से या सिस्टम द्वारा"।

मुझे सेवा इकाई की स्थिति के बारे में अधिक जानकारी कैसे मिल सकती है?

इकाइयों को उनके संबंधित राज्य में किसने रखा है?

मैंने कोशिश की, उदाहरण के लिए, sudo systemctl help dsmcad- जो केवल documentation = ...यूनिट फ़ाइल से लाइन को लाता है ।/etc/systemd/system/dsmcad.service

नोट: यहां मैं जानता हूं कि वास्तव में dsmcad सेवा क्या है और यह क्या करती है, मैंने इसे स्वयं स्थापित किया है। मुझे एक सामान्य समाधान में अधिक रुचि है।

जवाबों:


47

maskका एक मजबूत संस्करण है disabledisableनिर्दिष्ट इकाई फ़ाइल के सभी सिम्लिंक का उपयोग करके हटा दिया जाता है। यदि maskइकाइयों का उपयोग करने से जुड़ा होगा /dev/null। यदि आप उदाहरण के तौर पर देखते हैं तो यह प्रदर्शित किया जाएगा systemctl status halt.service। इसका लाभ maskकिसी भी प्रकार की सक्रियता, यहां तक ​​कि मैनुअल को भी रोकना है।

सावधानी: systemctl list-unit-filesइकाई फ़ाइलों (स्थिर, सक्षम, अक्षम, नकाबपोश, अप्रत्यक्ष) की स्थिति को सूचीबद्ध कर रही है और सेवा की स्थिति से कोई लेना-देना नहीं है। सेवाओं के उपयोग पर एक नज़र रखना systemctl list-units


8
कृपया यह भी बताएं कि यदि वांछित हो, तो नकाबपोश राज्य को कैसे हटाया जाए।
एरिकबवर्क

19
एक maskऔर एक unmaskकमांड है जिसका उपयोग किया जा सकता है systemctl। तो बस करो systemctl unmask name_of_service.service
केलर्सपीचेर

कर systemctl unmask name_of_service.serviceपूरी तरह से से मेरी सेवा परिभाषा फ़ाइल को हटा दिया /etc/systemd/system/है, इसलिए अब मैं इसे फिर से वापस जोड़ने की जरूरत है। यदि यह फिर से नकाबपोश हो जाता है, तो मैं एक लूप

1
हाय एल्डमिर, /etc/systemd/systemसेवाओं के प्रतीकात्मक लिंक हैं। आपका जोड़ना चाहिए *.serviceकरने के लिए फ़ाइल /lib/systemd/systemजहां से इसे करने के लिए लिंक कर दिया जाएगा /etc/systemd/systemअगर आप enableसेवा। maskके लिए एक लिंक बना रहा है /dev/nullऔर unmaskइस लिंक को हटा रहा है /etc/systemd/systemऔर जाहिर है इससे कोई फर्क नहीं पड़ता कि कोई व्यक्ति वहां कोई फाइल डालता है।
केलर्सपेइकर

3

hostname.serviceको निरर्थक माना जाता है क्योंकि systemdस्टार्टअप के दौरान होस्टनाम (/ / आदि / होस्टनाम से) बहुत पहले सेट हो जाता है।

यह सेटिंग डेबियन सिस्टमड पैकेज द्वारा प्रदान की गई है।

$ ls -l /lib/systemd/system/hostname.service
lrwxrwxrwx 1 root root 9 Apr  8 22:47 /lib/systemd/system/hostname.service -> /dev/null
$ dpkg-query --search /lib/systemd/system/hostname.service
systemd: /lib/systemd/system/hostname.service

इसी तरह, डेबियन अब करने के लिए एक खोल स्क्रिप्ट बिना चला सकते हैं haltप्रणाली है, यह द्वारा नियंत्रित किया जाता है systemd-बंद (स्रोत कोड यहाँ ) के बजाय।

यदि किसी सेवा को मैन्युअल रूप से मास्क किया गया है, तो /etc/systemd/systemइसके बजाय मुखौटा स्थापित किया जाएगा।

जब वे डेबियन / उबंटू पर निकाल दिए जाते हैं, तो सेवाओं को भी मुखौटा लगा दिया जाता है । मुझे पता नहीं क्यों।


मास्किंग बनाम सेवाओं को हटाने से पैकेज को हटाने या हटाने के अंतर के साथ आता है। पहले मामले में कॉन्फिग-फाइल्स रखी जाती हैं और इस तरह गलती से किसी सर्विस को एक्टिवेट करना खतरनाक हो सकता है (क्योंकि कॉनफिगर फाइल अभी भी कॉनफिगर फाइल्स में हो सकती है)। एक शुद्ध पैकेज में सेवा फ़ाइलों को हटा दिया जाएगा और नकाबपोश नहीं होंगे।
फिक्सिमन

0

चूंकि आप नकाबपोश राज्य के बारे में जानकारी का अनुरोध कर रहे हैं, इसलिए यह उल्लेख करना महत्वपूर्ण है कि यह एक सेवा में देखा जा सकता है कि शुरू होने के बाद, इसे संशोधित किया गया था, फिर से लोड करना (सिस्टमक्टल डेमन-रीलोड) और नया राज्य ठीक नहीं है । इसे समझने के लिए एक आसान उदाहरण निम्नलिखित परिदृश्य है:

a) the service is running well (already started)
b) edit the service definition file and delete everything in its contents
c) reload
d) state masked will be observed too

इसलिए, नकाबपोश राज्य को एक अनुचित सेवा परिभाषा से उत्पन्न किया जा सकता है। इसलिए, उपयोगकर्ता अनुचित तरीके से सेवा को संपादित करके अनमास्क स्टेट को प्रेरित कर सकता है।

अवलोकन: मुझे यकीन नहीं है कि यह उद्देश्य पर होता है या यह एक साधारण बग (डिफ़ॉल्ट विकल्प) है, लेकिन यह साझा करने के लिए कुछ दिलचस्प जानकारी हो सकती है

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