Ubuntu12.04: स्टार्टअप पर डेमॉन प्रक्रिया को अक्षम कैसे करें


23

मैं आमतौर पर डेमॉन प्रक्रिया का उपयोग service start/stopया initctl start/stopप्रारंभ या रोकना चाहता हूं लेकिन अब मैं जो देख रहा हूं वह स्टार्टअप उदाहरण पर शुरू से डेमन प्रक्रिया को अक्षम करना है mysqld

वर्तमान में क्या कर रहा हूँ का नाम बदलने है /etc/init/mysql.confकरने के लिए /etc/init/mysql.conf.bak, लेकिन एक छोटे से पढ़ने के बारे में के बाद systemdमुझे पता चला है कि यह प्रदान करता है के लिए आया था enable & disableऊपर कार्य के लिए विकल्प।

तो, ubuntu 12.04 के साथ भी ऐसा ही कुछ है upstart


आप कहते हैं कि आप systemd का उपयोग कर रहे हैं? मैं इसे अपने फेडोरा 17 कंप्यूटर पर उपयोग करता हूं। systemctl [enable|disable|is-enabled] mysqld.service
बेन्जीवेइबे

1
@BenjiWiebe: नहीं, मैं सिस्टमड का उपयोग नहीं कर रहा हूं। मैं upstart का उपयोग कर रहा हूं क्योंकि ubuntu 12.04 / 12.10 में systemd डिफ़ॉल्ट नहीं है।
रणराग

1
ओह, अब मैं देख रहा हूँ ... मुझे यकीन नहीं था कि मैं क्या सोच रहा था।
बेनजीवेब

जवाबों:


26

आप निम्न कमांड चलाकर सेवाओं को निष्क्रिय कर सकते हैं:

sudo update-rc.d -f <service name> disable

मैन पेज का अंश:

जब अक्षम [S | २ | ३ | ४ | ५] विकल्पों के साथ चलाया जाता है, अपडेट-rc.d स्क्रिप्ट /etc/init.d/name के लिए मौजूदा रनवे लिंक को संशोधित करता है, क्रम संख्या के साथ लिंक को रोकने के लिए लिंक शुरू करने का नाम बदलकर मूल अनुक्रम संख्या 100 शून्य के अंतर पर।


2
मेरे पास इस वोट को डाउन करने के लिए पर्याप्त प्रतिष्ठा नहीं है और बिना किसी स्पष्टीकरण के ऐसा करना किसी भी तरह से अयोग्य होगा, तो बस एक टिप्पणी: @Noob द्वारा प्रश्न Ubuntu 12.04 से संबंधित है जो Upstart (/etc/init/*.conf कॉन्फ़िगरेशन) का उपयोग करता है फ़ाइलें) अधिकांश सिस्टम डेमॉन के लिए (जैसा कि @Noob द्वारा उल्लेख किया गया है), जबकि आपका सुझाव केवल डेमॉन के लिए काम करता है /etc/init.d/* (पुरानी SysV शैली) में स्क्रिप्ट का उपयोग करना शुरू किया। संपादित करें: रिकॉर्ड के लिए, warl0ck का सही उत्तर है (धन्यवाद!)।
xolox

3
प्रश्न एक काल्पनिक या सामान्य स्थिति के बारे में है जो एक विशेष सामयिक मामले के रूप में mysql का उपयोग करता है। ओपी को इस उत्तर के बारे में कम से कम आंशिक रूप से पता था, लेकिन यह ध्यान में रखने के लिए अच्छी तरह से काम कर सकता है कि कुछ उपयोगी पैकेज अपस्टार्ट प्रारूप का सम्मान नहीं करेंगे और जैसे वेबिनार और टिप्पणी के समय के आसपास स्रोत पैकेज से कई स्व-निर्मित) । इसका अर्थ है कि यह विधि संदर्भ के लिए एक वैध आंशिक उत्तर हो सकती है, जैसे कि वार्ल0 और मार्क के उत्तर पैकेज प्रबंधक के साथ स्थापित काल्पनिक काल्पनिक सेवा के विशेष बिंदु को संबोधित करने के लिए करते हैं।
जस्टिन 01

-F ध्वज की आवश्यकता नहीं है।
दिनमान '’

20

सेवा को अक्षम करने और सुधारने का सही तरीका है, एक XX.override फ़ाइल बनाना,

echo 'manual' > /etc/init/mysqld.override

इस तरह अपस्टार्ट सेवा अपने आप शुरू नहीं होगी


क्या यह अभी भी साथ काम करता है Ubuntu 12.04?
RSK

@RSK हां, आप इसे सिर्फ एक कोशिश क्यों नहीं मानते?
daisy

1
मैंने कोशिश की और मेरे लिए काम नहीं किया। Lemme फिर से प्रयास करें और आपको अपडेट करेगा।
RSK

नहीं, यह Ubuntu-14.04 पर काम नहीं करता है।
हाय-एंजेल

1
@RSK yes, why don't you just give it a try?मुझे लगता है, क्योंकि इस पृष्ठ से प्रत्येक सलाह के लिए "एक कोशिश" के साथ सिस्टम को पुनरारंभ करना बहुत असुविधाजनक है।
user907860

7

@ warl0ck के पास यह अधिकार है; जोड़ना चाहते थे कि यह जानकारी अपस्टार्ट प्रलेखन में काफी अच्छी तरह से प्रलेखित है: http://upstart.ubuntu.com/cookbook/#diseable-a-job-from-automatically-starting

विशेष रूप से:

1.3 अपस्टार्ट के साथ, आप ओवरराइड फ़ाइलों का उपयोग कर सकते हैं और एक ही परिणाम को सरल तरीके से प्राप्त करने के लिए मैनुअल श्लोक [27]:

# echo "manual" >> /etc/init/myjob.override

ध्यान दें कि आप ऐसा करके उसी प्रभाव को प्राप्त कर सकते हैं:

# echo "manual" >> /etc/init/myjob.conf

हालांकि, ओवरराइड सुविधा का उपयोग करने का मतलब है कि आप मूल नौकरी कॉन्फ़िगरेशन फ़ाइल को अछूता छोड़ सकते हैं।

मूल व्यवहार पर वापस जाने के लिए, या तो ओवरराइड फ़ाइल को हटाएं या उसका नाम बदलें (या अपने ".conf" फ़ाइल से मैनुअल श्लोक को हटा दें)।


5

इसमें सहायता करने के लिए सॉफ्टवेयर का एक अच्छा टुकड़ा भी है। इसे rcconf कहा जाता है।

बस इसका उपयोग करके डाउनलोड करें:

sudo apt-get install rcconf

और इसे कमांड के साथ प्रयोग करें

rcconf

सेवाओं को अक्षम / सक्षम करने के लिए आपको एक अच्छा (कमांडलाइन) इंटरफ़ेस मिलता है।


यह सिस्टम पर शामिल नहीं है, इसलिए अधिक सामान स्थापित करें बेहतर जवाब नहीं होगा।
m3nda

लेकिन वास्तव में उपयोगी: D
मैगिको

1

करने के लिए नेविगेट प्रयास करें /etc/rc2.dऔर नाम बदलने के लिए आप क्या चाहते हैं नहीं (जैसे एक "K" में बदल (प्रारंभिक, राजधानी) "एस": स्टार्टअप पर चलाने के लिए S02mysqlकरने के लिए K02mysql)। यदि आप अपना दिमाग बदलते हैं, तो इसे उल्टा करें। मुझे लगता है कि 2 रनलेवल को संदर्भित करता है, 2 किस मामले में डिफ़ॉल्ट, मल्टीसियर रनवेल है। संभवतः यही वह जगह है जहाँ आपके पास दिन-प्रतिदिन के कंप्यूटर उपयोग के लिए अधिकांश सामान है।

संपादित करें : जेम्स ओ'गोरमैन की टिप्पणी नीचे पढ़ें।


1
हां '2' का संदर्भ रन-लेवल पर है। आप अपने वर्तमान रन-लेवल का उपयोग करके who -rया देख सकते हैं runlevel
रणराग

यही कारण है, सच है who --runlevel
इमानुएल बर्ग

1
हालांकि यह जो आप चाहते हैं, वह तकनीकी रूप से गलत है। SysV init के संदर्भ में, 'S' स्क्रिप्ट स्क्रिप्ट्स हैं और 'K' मार स्क्रिप्ट्स हैं - यानी S स्टार्टअप के क्रम में चलाए जाते हैं और K शटडाउन के क्रम में चलाए जाते हैं (या निचले रनवेल में बदलते हैं)।
जेम्स ओ'गॉर्मन

@ JamesO'Gorman: दिलचस्प है, मैं डेबियन पर हूँ, क्या आप कह रहे हैं कि मेरी "K स्क्रिप्ट" शटडाउन पर चल रही हैं? क्या कोई अक्षर है जो स्क्रिप्ट को पूरी तरह से निष्क्रिय करने के लिए इस्तेमाल किया जा सकता है, जिसमें कोई खतरा नहीं है? (यह एक ही फ़ोल्डर में रखने के लिए व्यावहारिक है, एक नई स्थिति उत्पन्न होनी चाहिए जहां आप उन्हें चाहते हैं।)
इमानुएल बर्ग

@EmanuelBerg हाँ, initशटडाउन पर 'KXXscript स्टॉप' चलाएगा। आपको सिमिलिंक को हटा देना चाहिए या वास्तविक इनिट स्क्रिप्ट से एक्ज़िक्यूट बिट को हटा देना चाहिए। मेरा मानना ​​है कि डेबियन update-rc.dइसका प्रबंधन करने के लिए उपयोग करता है। आरएचईएल (और डेरिवेटिव) का उपयोग करें chkconfig
जेम्स ओ'गोर्मन

0

अपस्टार्ट के साथ सेवा विन्यास फाइलों में निहित है /etc/init/। उदाहरण के लिए ssh को कॉन्फिगर फाइल का उपयोग करके नियंत्रित किया जाता है/etc/init/ssh.conf

यह फ़ाइल "ईवेंट" को निर्दिष्ट करती है जो "जॉब" शुरू करने के लिए अपस्टार्ट को संकेत देगा।

किसी सेवा को स्वचालित रूप से शुरू करने से रोकने के लिए, कई विधियों में से एक का उपयोग किया जा सकता है:
a) सेवा का नाम बदलें। फ़ाइल को बंद कर दें ताकि वह .conf
b के साथ समाप्त न हो । सेवा से शुरू करें "।"

अपस्टार्ट के नए संस्करणों में (कम से कम v1.3 के बाद से) आप एक सर्विस.ओवराइड फ़ाइल का उपयोग करके लाइन पर शुरू को भी ओवरराइड कर सकते हैं, इसलिए आप उपयोग कर सकते हैं:
# echo manual > /etc/init/service.override

अंत में आप सेवा के कॉन्फ़िगरेशन फ़ाइल के अंत में कीवर्ड "मैनुअल" भी जोड़ सकते हैं, जैसे:
# echo manual >> /etc/init/service.conf

ध्यान दें कि यह रनिंग सर्विस को "बंद" नहीं करता है, यह सिर्फ इसे स्वचालित रूप से शुरू होने से रोकता है। "मैनुअल" स्टार्टअप के लिए सेट करते समय आप initctl का उपयोग करके सेवा को नियंत्रित करते हैं, उदाहरण के लिए SSH डेमॉन को रोकने और शुरू करने के लिए:
# initctl stop ssh
# initctl start ssh

संभवतः उपस्टार्ट के लिए सबसे अच्छा दस्तावेज http://upstart.ubuntu.com/cookbook/ पर है

धारा 11.44 में "ऑटो-स्टार्टिंग से एक सेवा को अक्षम करना" शामिल है: http://upstart.ubuntu.com/cookbook/#dis enable -a-job-from-automatically-starting


0

खैर, मुझे कहना होगा कि बयान

echo "manual" >> /etc/init/myjob.override

थोड़ा भ्रामक है क्योंकि इसका मतलब है ओवरराइड फ़ाइल को जोड़ना। मैंने 14.04 को नेटवर्क-मैनेजर और निम्नलिखित काम नहीं किया

vim /etc/init/network-manager.override:
start
manual

हालाँकि यह काम कर गया

vim /etc/init/network-manager.override:
#start
manual

तो, IMO, initctl पहली सीधी रेखा के लिए दिखता है और इसे निष्पादित करता है। शायद मैं गलत हूं, लेकिन वे मेरे परीक्षा परिणाम थे। इनपुट का स्वागत है।

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