वर्तमान में Ubuntu, SysV , Upstart और systemd में सेवा के रूप में शुरू किए जाने वाले सॉफ़्टवेयर के लिए वास्तव में तीन अलग-अलग तरीके हैं । एक सेवा को पृष्ठभूमि में सिस्टम द्वारा चलाए जा रहे प्रोग्राम के रूप में परिभाषित किया गया है, जैसा कि उपयोगकर्ता द्वारा सीधे शुरू और चलाने के विपरीत है।
SysV
लिनक्स में सेवाओं को शुरू करने का पारंपरिक तरीका स्क्रिप्ट को उसमें सक्षम या अक्षम करने के लिए एक स्क्रिप्ट रखना /etc/init.d
और फिर update-rc.d
कमांड (या रेडहैट आधारित डिस्ट्रोस में chkconfig
) का उपयोग करना था।
यह कमांड कुछ हल्के से जटिल लॉजिक का उपयोग करता है जिससे सिम्बलिंक बनाया /etc/rc#.d
जा सके, जो सेवाओं को शुरू करने के क्रम को नियंत्रित करता है। यदि आप चलाते हैं ls /etc/rc2.d
तो आप आदेश देख सकते हैं कि सेवाओं को फ़ाइल नाम के साथ मार दिया जाएगा K##xxxx
और फ़ाइल नामों के साथ शुरू किया जाएगा S##xxxx
। ##
में S##xxxx
सेवा के लिए एक "आदेश देना शुरू" का अर्थ है xxxx
। इसके विपरीत, ##
में K##xxxx
सेवा के लिए मारने का आदेश का मतलब है xxxx
।
SysV के साथ एक प्रमुख मुद्दा यह था कि सिस्टम को बूट करते समय, धारावाहिक में सब कुछ करना पड़ता था, एक के बाद एक चीजें, सिस्टम बूट समय को वास्तव में धीमा कर देती हैं । इसे समानांतर करने का प्रयास किया गया था, लेकिन वे पूरी तरह से लाभ उठाने के लिए कठोर और कठोर थे। यह मुख्य कारण था कि अपस्टार्ट बनाया गया था।
कल का नवाब
अपस्टार्ट नौकरी परिभाषा फ़ाइलों का उपयोग करता है /etc/init
ताकि यह परिभाषित किया जा सके कि सेवा को किन घटनाओं में शुरू किया जाना चाहिए। इसलिए, जब सिस्टम बूट हो रहा है, अपस्टार्ट विभिन्न घटनाओं को संसाधित करता है, और फिर समानांतर में कई सेवाएं शुरू कर सकता है। उदाहरण के लिए, सिस्टम के संसाधनों का पूरी तरह से उपयोग करने की अनुमति देता है, उदाहरण के लिए, एक अन्य सीपीयू-बाउंड सेवा चलने पर डिस्क-बाउंड सेवा शुरू करने से, या जबकि नेटवर्क एक गतिशील आईपी पते के लिए प्रतीक्षा कर रहा है।
आप सभी अपस्टार्ट जॉब फ़ाइलों को चलाकर देख सकते हैं ls /etc/init/*.conf
मुझे यहाँ रुकने दो और कहो कि यदि आप नहीं जानते कि एक सेवा क्या है, या यह क्या करता है, तो इसे अक्षम न करें!
सभी सेवाओं को अपस्टार्ट में परिवर्तित नहीं किया गया है। पिछले कुछ महीनों से कैन्यनिकल में सर्वर टीम पर काम करते हुए, मैंने कई परिवर्तित नौकरी फ़ाइलों पर काम किया है, और सबसे अच्छा हिस्सा यह है कि यह सभी स्क्रिप्ट "जादू" से छुटकारा पाने की अनुमति देता है और बस डाल देता है कुछ कमांड यहाँ और वहाँ परिभाषित करने के लिए कैसे सेवा शुरू करने के लिए, और अधिक कुछ नहीं। लेकिन अभी के लिए, केवल मुट्ठी भर पारंपरिक नेटवर्क सेवाएं, जैसे स्क्वीड और सांबा को परिवर्तित किया गया है।
क्या एक सेवा अपस्टार्ट-आधारित है?
यह पता लगाने के लिए कि क्या कोई सेवा upstart- आधारित है, आप स्थिति कमांड चला सकते हैं:
status servicename
यदि यह एक अपस्टार्ट का काम है, तो यह इसे दिखाएगा:
$ status statd
statd start/running, process 942
लेकिन अगर ऐसा नहीं है, तो आपको कुछ इस तरह दिखाई देगा:
$ status apache2
status: Unknown job: apache2
इस मामले में, अपस्टार्टapache2
में परिवर्तित नहीं किया गया है । इसलिए, आपको निष्क्रिय करने के लिए बस चलाएंapache2
sudo update-rc.d apache2 disable
sudo service apache2 stop
अपस्टार्ट में सेवाओं (नौकरियों) को अक्षम करें
अपस्टार्ट जॉब परिभाषाओं में एक update-rc.d
कमांड नहीं है । नौकरी को अक्षम करने के लिए, आपको इसे अक्षम करने के लिए सीधे नौकरी फ़ाइल को संपादित करने की आवश्यकता है। इसे करने के दो तरीके हैं।
यदि आप अभी भी इसे मैन्युअल रूप से शुरू करने में सक्षम होना चाहते हैं, तो आपको start on
स्थिति पर टिप्पणी करने की आवश्यकता है । कहते हैं कि आप सांबा स्थापित करना चाहते हैं , लेकिन यह अपने आप शुरू नहीं होता है। यहाँ नौकरी फ़ाइल (natty में) है:
description "SMB/CIFS File Server"
author "Steve Langasek <steve.langasek@ubuntu.com>"
start on local-filesystems
stop on runlevel [!2345]
respawn
pre-start script
RUN_MODE="daemons"
[ -r /etc/default/samba ] && . /etc/default/samba
[ "$RUN_MODE" = inetd ] && { stop; exit 0; }
install -o root -g root -m 755 -d /var/run/samba
end script
exec smbd -F
सांबा को निष्क्रिय करने के लिए , आप बस #
" start on local-filesystems
" के सामने रख सकते हैं । ध्यान दें कि जब यह बूट पर वापस शुरू नहीं होगा, तब भी आपको इसे इस बार बंद करना होगा
sudo service smbd stop
यदि, हालांकि, आप कभी भी सांबा को शुरू नहीं करना चाहते हैं , तो मैं वास्तव में पैकेज को हटाने का सुझाव दूंगा। यदि, फिर भी, आप इसे स्थापित करना चाहते हैं, लेकिन शुरू करने योग्य नहीं है, तो आप यह भी कर सकते हैं:
mv /etc/init/smbd.conf /etc/init/smbd.conf.disabled
स्टार्ट / स्टॉप का उपयोग कर एक सेवा को अक्षम करें (11.04 तक)
नवोदय कि 11.04 में हो जाएगा के संस्करण के साथ शुरू, एक नया कीवर्ड कि अक्षम कर देता है start on
और stop on
पद: manual
। तो सेवा को 11.04 तक अक्षम करने का दूसरा तरीका है:
echo 'manual' | sudo tee /etc/init/mysql.override
# command from root shell
echo manual >> /etc/init/mysql.override
आप override
नौकरी की परिभाषा को संपादित किए बिना किसी सेवा को निष्क्रिय करने के लिए एक फ़ाइल बना सकते हैं , बस manual
उसमें कीवर्ड डालकर ।