सिस्टमैड सेवाओं को कैसे हटाएं


178

यदि मैं एक नई सेवा स्थापित करता हूं, तो तय करें कि मुझे वह एप्लिकेशन अब नहीं चाहिए और इसे हटा दें, सेवा अभी भी त्रुटि केsystemctl रूप में आउटपुट में सूचीबद्ध है ।

यह कहां से आ रहा है और मैं उन्हें पूरी तरह से कैसे निकाल सकता हूं?

जवाबों:


288

सेवा विस्मरण का मेरा नुस्खा ( rmबयानों से सावधान रहें !)

systemctl stop [servicename]
systemctl disable [servicename]
rm /etc/systemd/system/[servicename]
rm /etc/systemd/system/[servicename] symlinks that might be related
systemctl daemon-reload
systemctl reset-failed

यह संभव है कि systemd सेवा /etc/init.d में पुरानी शैली की स्क्रिप्ट को 'लपेटता' है, इसलिए आप इसे साफ़ करना चाहते हैं, लेकिन यह नहीं है कि जहाँ systemd सेवाएँ रहती हैं।


7
ध्यान रखें कि ऐसे कई स्थान हैं जहाँ Systemd इकाई फाइलें संग्रहीत हैं, विशेष रूप से /usr/lib/systemd/systemऔर भी /etc/systemd/system/। संदर्भ के लिए देखें: access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/…
मार्क Edington

6
मुझे /etc/init.d/[servicename]दौड़ने से पहले हटाना पड़ाsystemctl reset-failed
एंड्रिया

4
सही है, मैं यूनिट फ़ाइलों को हटाने से पहले अक्षम करना भूल गया। BTW, हटाने के लिए सभी यूनिट फ़ाइलों को खोजने के लिए, मैं के आउटपुट का निरीक्षण करता हूं systemctl cat [servicename]
अमीर

यह /etc/init.d/ में "लिपटी" पुरानी शैली की स्क्रिप्ट हो सकती है, लेकिन यदि आप इसे नहीं हटाते हैं, तो आप पाएंगे कि यह अभी भी आपके निष्कासन से बची हुई सेवाओं के अंतर्गत दिखाई दे रही है। मैं आपको बता सकता हूं कि मेरे लिए यह मामला था। आप इसे और अधिक पूर्ण बनाने के लिए अपने उत्तर में जोड़ सकते हैं, लेकिन उम्मीद है कि अगले व्यक्ति को इसकी आवश्यकता है कि वह टिप्पणियों को देखेगा।
मार्लोन

1
यह काम किया, धन्यवाद, लेकिन मुझे यकीन नहीं है कि मुझे इस कचरे को मैन्युअल रूप से साफ करने के लिए क्यों बनाया गया है।
रॉल्फ

25

आप शायद देख रहे हैं reset-failed:

$ sudo systemctl reset-failed
$

सिस्टमड मैन पेज से:

reset-failed [PATTERN...]

निर्दिष्ट इकाइयों की "विफल" स्थिति को रीसेट करें, या यदि कोई इकाई नाम पारित नहीं हुआ है, तो सभी इकाइयों की स्थिति को रीसेट करें। जब कोई इकाई किसी तरह से विफल हो जाती है (अर्थात गैर-शून्य त्रुटि कोड के साथ बाहर निकलने की प्रक्रिया, असामान्य रूप से या समय समाप्त हो जाना), तो यह स्वचालित रूप से "विफल" स्थिति में प्रवेश करेगा और सेवा से व्यवस्थापक द्वारा आत्मनिरीक्षण के लिए इसका निकास कोड और स्थिति दर्ज की जाती है। इस आदेश के साथ पुनरारंभ या रीसेट किया गया है।


2
यह वही नहीं है जो सवाल पूछ रहा है। पृथ्वी पर यह 17 बार क्यों उखाड़ा गया है?
psusi

1
यह एकमात्र सही उत्तर है। अधिक upvotes और चेक मार्क वाले अन्य वर्कअराउंड हैं।
थॉमस

1
मैंने ओपी के प्रश्न को नहीं पढ़ा है, लेकिन यह वह उत्तर था जिसकी मुझे तलाश थी।
कज़िनकोकेन

23

लगता है जैसे आपने इसे अनइंस्टॉल कर दिया, लेकिन सिस्टम हुक को नहीं हटाया:

# systemctl disable [servicename]


4

@ मार्क-लाकाटा के उत्तर को जोड़ना और rmकमांड के लिए आवश्यक सावधानी को ध्यान में रखते हुए । [chkconfig]प्रक्रिया को सरल कर सकते हैं! ( chkconfig के बारे में पढ़ने के लिए यहां क्लिक करें )

आदेशों की सूची पुन: दर्ज करने के लिए:

  1. systemctl stop [servicename]
  2. chkconfig [servicename] off
  3. systemctl daemon-reload
  4. systemctl reset-failed

नोट: 1 कमांड वैकल्पिक है, इस पर निर्भर करता है कि आप वर्तमान सत्र में सेवा चालू रखना चाहते हैं या नहीं (जैसा कि इस प्रश्न के लिए कमांड का उपयोग किया जाना चाहिए)।

दूसरा आदेश सेवा को अक्षम करने और हटाने (सिमिलिंक का पालन करने) दोनों का ख्याल रखता है।


1
chkconfigSysVinit सेवाओं को सक्षम / अक्षम करने का मूल आदेश था। उपयोग करने वाली प्रणालियों में systemd, यह एक पिछड़े संगतता आदेश के रूप में मौजूद हो सकता है; लेकिन मूल systemctlआदेश बस के रूप में सरल है:systemctl disable [servicename]
telcoM

1
ठीक है, लेकिन मेरे लिए इस कमांड का उपयोग करने का कारण है, तो आपको स्पष्ट रूप से rm कमांड नहीं चलाना है
लहसुन का रस

1

Systemd से सेवा निकालना:

सिस्टमड एक यूनिट को हटाने के लिए यूनिट (सेवाओं को परिभाषित करने के लिए फ़ाइल) का उपयोग करता है, यूनिट को हटाया जाना है ... यहां इकाई स्थानों की एक सूची है:

/etc/systemd/system/ (and sub directories)
/usr/local/etc/systemd/system/ (and sub directories)
~/.config/systemd/user/ (and sub directories)
/usr/lib/systemd/ (and sub directories)
/usr/local/lib/systemd/ (and sub directories)
/etc/init.d/ (Converted old service system)

रिफ्रेश सिस्टमड:

systemctl daemon-reload
systemctl reset-failed

भूत सेवाएं (नहीं मिली):

सिस्टमड कई कारणों से भले ही यूनिट को डिलीट कर दे लेकिन भूत (नहीं-मिली) सेवाओं को सूचीबद्ध कर सकता है

  1. यूनिट अभी भी सिस्टमड डायरेक्टरी में से एक पर मौजूद है
  2. इकाई से बाहर नहीं निकलता है लेकिन एक फ़ाइल लिंक अभी भी सिस्टमड डायरेक्टरी में से एक पर मौजूद है
  3. सेवा का उपयोग अन्य इकाई (एस) में किया जाता है *

(*) यदि किसी सेवा का उल्लेख अन्य इकाई में है, लेकिन मौजूद नहीं है, तो systemd उस सेवा को सूचीबद्ध करेगा, जो कि राज्य में नहीं है, भले ही इकाई फ़ाइल न हो-पाया गया ... आप खोज सकते हैं कि कौन सी इकाई पाठ खोज के साथ उस सेवा का उपयोग कर रही है और उन इकाइयों को संपादित करें (अनुशंसित नहीं है यदि आप उस सेवा को बाद में स्थापित करने की योजना बनाते हैं)

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