वर्तमान में उबंटू में एक सेवा के रूप में सॉफ्टवेयर शुरू करने के लिए वास्तव में तीन अलग-अलग तरीके हैं, SysV, अपस्टार्ट और systemd. एक सेवा को यहां पृष्ठभूमि में सिस्टम द्वारा चलाए जाने वाले प्रोग्राम के रूप में परिभाषित किया गया है, जैसा कि उपयोगकर्ता द्वारा सीधे शुरू और चलाने के विपरीत है ।
SysV
लिनक्स में सेवाएं शुरू करने का पारंपरिक तरीका एक स्क्रिप्ट को जगह देना था /etc/init.d
, और फिर उपयोग करें update-rc.d
आदेश (या RedHat आधारित distros, 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
मुझे बस यहीं रुकने दो और कहो कि अगर आपको नहीं पता कि कोई सेवा क्या है, या वह क्या करती है, तो उसे अक्षम न करें!
सभी सेवाओं को अपस्टार्ट में परिवर्तित नहीं किया गया है । पिछले कुछ महीनों से कैननिकल में सर्वर टीम पर काम करते हुए, मैंने कई परिवर्तित नौकरी फ़ाइलों पर काम किया है, और सबसे अच्छा हिस्सा यह है कि यह किसी को सभी स्क्रिप्ट "जादू" से छुटकारा पाने की अनुमति देता है और बस इसमें डाल देता है सेवा शुरू करने के तरीके को परिभाषित करने के लिए यहां और वहां कुछ आदेश, और लेकिन अभी के लिए, केवल मुट्ठी भर पारंपरिक नेटवर्क सेवाएं, जैसे विद्रूप और सांबा, परिवर्तित किया गया है ।
क्या एक सेवा अपस्टार्ट-आधारित है?
यह पता लगाने के लिए कि क्या कोई सेवा अपस्टार्ट-आधारित है, आप स्थिति कमांड चला सकते हैं:
status servicename
अगर यह एक है अपस्टार्ट नौकरी, यह यह दिखाएगा:
$ status statdstatd start/running, process 942
लेकिन अगर ऐसा नहीं है, तो आप इस तरह कुछ और देखेंगे:
$ status apache2status: Unknown job: apache2
इस मामले में, apache2
में परिवर्तित नहीं किया गया है अपस्टार्ट. तो, अक्षम करने के लिए apache2
तुम बस भागो
sudo update-rc.d apache2 disablesudo service apache2 stop
अपस्टार्ट में सेवाओं (नौकरियों) को अक्षम करें
अपस्टार्ट नौकरी परिभाषाओं में एक नहीं है update-rc.d
कमान। नौकरी को अक्षम करने के लिए, आपको इसे अक्षम करने के लिए सीधे नौकरी फ़ाइल को संपादित करना होगा । ऐसा करने के दो तरीके हैं ।
यदि आप अभी भी इसे मैन्युअल रूप से शुरू करना चाहते हैं, तो आपको टिप्पणी करनी होगी start on
हालत। कहें कि आप इंस्टॉल करना चाहते हैं सांबा, लेकिन यह स्वचालित रूप से शुरू नहीं हुआ है । यहां नौकरी फ़ाइल है (नट्टी में):
description "SMB/CIFS File Server"author "Steve Langasek <steve.langasek@ubuntu.com>"start on local-filesystemsstop on runlevel [!2345]respawnpre-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/sambaend scriptexec 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 shellecho manual >> /etc/init/mysql.override
आप एक बना सकते हैं override
नौकरी की परिभाषा को संपादित किए बिना किसी सेवा को अक्षम करने के लिए फ़ाइल, बस डालकर manual
इसमें कीवर्ड।