डेबियन में सेवाएं कैसे काम करती हैं, और मैं उन्हें कैसे प्रबंधित कर सकता हूं?


79

विंडोज में मेरे पास सेवा प्रबंधक है, जहां मुझे सभी सिस्टम सेवाएं दिखाई देती हैं, जिसे विंडोज के माध्यम से ही शुरू किया जा सकता है, मैं इसका उपयोग करने वाले उपयोगकर्ता को सेट करता हूं, राइट्स प्रबंधन वहां है, और मैं सेवाओं के लिए चर और कुछ अन्य जानकारी पास कर सकता हूं , मैं उन्हें नाम दे सकता हूं, और मैं एक कार्यक्रम की डुप्लिकेट सेवाएं बना सकता हूं और इसी तरह। इसलिए मेरे पास विंडोज में एक मुख्य प्रबंधन उपकरण है।

मैं लिनक्स में कैसे कर सकता हूं? मैं स्टार्टअप पर "svnerve" चलाने के लिए कैसे ट्रिगर कर सकता हूं, या मैं एक विशेष संदर्भ में चलने वाली सेवाओं को कैसे कॉन्फ़िगर कर सकता हूं। मैं सभी "प्रोग्राम की गई" सेवाओं को कैसे देख सकता हूं?


9
आप किस वितरण और संस्करण का उपयोग कर रहे हैं? सेवा प्रबंधन (सेवाओं को लगभग हमेशा यूनिक्स दुनिया में 'डेमोंस' कहा जाता है) आसान और अर्ध-मानक हुआ करते थे। इन दिनों चीजें अधिक विविध हैं। और हमेशा अच्छा नहीं होता। :) इसके अलावा, संदर्भ से आपका क्या मतलब है ?
एलेक्सिओस

हालांकि ऐसा लगता है कि सिस्टमड धीरे-धीरे इनिट सिस्टम युद्ध जीत रहा है। डेबियन पुराने SysVinit का उपयोग करते हुए अभी भी आखिरी बड़ी पकड़ है, और वर्तमान में यह निर्धारित करने की प्रक्रिया में है कि किस init सिस्टम के साथ जाना है।
पैट्रिक

1
वर्तमान में मैं डेबियन (नवीनतम स्थिर) के साथ काम करता हूं, और संदर्भ से मेरा मतलब है पथ-चर या एक निर्दिष्ट उपयोगकर्ता-संदर्भ।
एर्डिनि आइ

1
यदि आपको केवल serverडेबियन पर कमांड का उपयोग करने की आवश्यकता है , तो unix.stackexchange.com/q/226089/130402
पीटर

जवाबों:


124

वर्तमान में linux द्वारा 3 मुख्य init सिस्टम का उपयोग किया जाता है। कुछ साल पहले, बस एक था, SysVinit। लेकिन SysVinit में गंभीरता से सेवा निर्भरता रेखांकन जैसी क्षमताओं की कमी थी, इसलिए इसे अब तक के सबसे अधिक विकृतियों में चित्रित किया गया है। वर्तमान में सबसे अधिक distros उपयोग करने जा रहे systemd । हालांकि वहाँ भी नवोदय

लेकिन यहाँ 3 init सिस्टम में से प्रत्येक के लिए आपके प्रश्न का उत्तर है:

 

SysVinit

SysVinit वर्तमान में डेबियन और RedHat द्वारा उपयोग किया जाता है। हालांकि RedHat (7) का अगला संस्करण सिस्टमड का उपयोग करेगा।

बूट पर SysVinit सेवाओं को सक्षम करने का एकतरफा तरीका उन्हें /etc/rc3.d(या /etc/rc2.d) में सम्‍मिलित करना है । सभी सेवाओं में पाया जा सकता है /etc/init.d। हालांकि ध्यान दें कि इन फ़ाइलों को प्रबंधित करने के लिए डिस्ट्रोस के पास अक्सर अपना खुद का टूल होगा, और इसके बजाय उस टूल का उपयोग किया जाना चाहिए। (फेडोरा / रेडहैट के पास serviceऔर chkconfigubuntu है update-rc.d)

सूची सेवाएँ:

ls /etc/init.d/

सेवा शुरू करें:

/etc/init.d/{SERVICENAME} start

या

service {SERVICENAME} start

सेवा रोकें:

/etc/init.d/{SERVICENAME} stop

या

service {SERVICENAME} stop

सेवा सक्षम करें:

cd /etc/rc3.d
ln -s ../init.d/{SERVICENAME} S95{SERVICENAME}

( S95ऑर्डर को निर्दिष्ट करने के लिए इसका उपयोग किया जाता है। S01 S02 से पहले शुरू होगा, आदि)

सेवा अक्षम करें:

rm /etc/rc3.d/*{SERVICENAME}

 

systemd

सिस्टमड का उपयोग करने वाला सबसे उल्लेखनीय वितरण फेडोरा है। हालांकि यह कई अन्य लोगों द्वारा उपयोग किया जाता है। इसके अतिरिक्त, डेबियन को अपस्टार्ट पर सिस्टमड के साथ जाने के लिए चुना गया है, यह अधिकांश वितरणों के लिए डिफेक्टो अपस्टार्ट सिस्टम बन जाएगा (उबंटू ने पहले ही घोषणा की है कि वे सिस्टमड के लिए अपस्टार्ट को छोड़ देंगे)।

सूची सेवाएँ:

systemctl list-unit-files

सेवा शुरू करें:

systemctl start {SERVICENAME}

सेवा रोकें:

systemctl stop {SERVICENAME}

सेवा सक्षम करें:

systemctl enable {SERVICENAME}

सेवा अक्षम करें:

systemctl disable {SERVICENAME}

 

कल का नवाब

अपस्टार्ट को उबंटू के लोगों द्वारा विकसित किया गया था। लेकिन डेबियन ने सिस्टमड के साथ जाने का फैसला करने के बाद , उबंटू ने घोषणा की कि वे ऊपर जाएंगे

रेडस्टैट द्वारा उपस्टार्ट का भी संक्षिप्त रूप से उपयोग किया गया था, क्योंकि यह आरएचईएल -6 में मौजूद है, लेकिन इसका आमतौर पर उपयोग नहीं किया जाता है।

सूची सेवाएँ:

initctl list

सेवा शुरू करें:

initctl start {SERVICENAME}

सेवा रोकें:

initctl stop {SERVICENAME}

सेवा सक्षम करें:

दुर्भाग्य से 2 तरीके:

  1. एक फाइल होगी /etc/default/{SERVICENAME}जिसमें एक लाइन होगी ENABLED=...। इस लाइन को बदलें ENABLED=1

  2. एक फाइल होगी /etc/init/{SERVICENAME}.override। सुनिश्चित करें कि इसमें शामिल है start(या पूरी तरह से अनुपस्थित है), नहीं manual

सेवा अक्षम करें:

echo manual > /etc/init/{SERVICENAME}.override

नोट: इसमें 'OpenRC' इनिट सिस्टम भी है जो कि Gentoo द्वारा उपयोग किया जाता है। वर्तमान में जेंटू एकमात्र ऐसा डिस्ट्रो है जो इसका उपयोग करता है, और इसे उपयोग के लिए नहीं माना जा रहा है, और न ही किसी अन्य डिस्ट्रो द्वारा समर्थित है। इसलिए मैं इसका उपयोग नहीं कर रहा हूं (हालांकि यदि राय है कि मैं करता हूं, तो मैं इसे जोड़ सकता हूं)।


OpenRC SysVinit के लिए एक अमूर्त की तरह है। यह इसे प्रतिस्थापित नहीं करता है, यह इसमें जोड़ता है।
Spidey

महान राइटअप! बस कुछ ही छोटे सुधार: RHEL 6.x (और इस प्रकार, CentOS 6.x और शेष डेरिवेटिव) उबंट्ट का उपयोग करता है, जैसे उबंटू (हालांकि अधिकांश सेवाएं अभी भी SysV स्क्रिप्ट का उपयोग करती हैं)। इसके अलावा, मैं जोड़ना चाहूंगा कि "chkconfig" (आरएच) और "अपडेट-आरडीडी" (डेबियन) आरसी? डी निर्देशिका के लिंक जोड़ने के लिए "आधिकारिक" तरीके हैं।
rsuarez

RHEL6 चीज़ पर @rsuarez अच्छा बिंदु। हालांकि इसका उपयोग करने के लिए बहुत कुछ नहीं लगता है। अधिकांश प्रणाली अभी भी विरासत SysVinit (17 upstart, 89 SysVinit में से एक मेरे RHEL6 सिस्टम पर) के माध्यम से चलती है। और chkconfigऔर update-rc.dउल्लेख कर रहे हैं। SysVinit :-) के अंतर्गत दूसरा पैराग्राफ देखें
पैट्रिक

@ पैट्रिक # 1 पर सहमत; "ओह!" # 2 :-)
rsuarez

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

9

विभिन्न वितरण सेवाओं के प्रबंधन के लिए विभिन्न तंत्रों का उपयोग करते हैं। सेवाओं को प्रबंधित करने के लिए सॉफ्टवेयर को init कहा जाता है , पारंपरिक नाम के बाद पहली प्रक्रिया (आईडी आईडी के साथ) जो दूसरों को शुरू करने के लिए होती है।

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

यह देखने के /etc/rc?.dलिए कि क्या सेवाएँ पहले से मौजूद हैं। बिंदी के पहले अक्षर या अंक रनलेबल है; प्रविष्टियाँ जिनका नाम रनलेवल में प्रवेश करते समय Sतर्क के साथ क्रियान्वित किया जाता है start, और जिनके नाम के साथ शुरू होता है प्रविष्टियों Kको रनवे को छोड़ते समय निष्पादित किया जाता है। सामान्य रनलेवल अनुक्रम है: एस बूट के दौरान (इसलिए /etc/rcS.d/S*निष्पादित किया जाता है), फिर 2 (इसलिए /etc/rc2.d/S*निष्पादित किया जाता है)। शटडाउन समय पर, /etc/rc2.d/K*निष्पादित किए जाते हैं, फिर रनवे 0 (या रिबूट के लिए 6) पर स्विच करता है।

संक्षेप में, यदि आप एक नई सेवा के लिए एक स्टार्टअप स्क्रिप्ट बनाना चाहते हैं:

  • में एक शेल स्क्रिप्ट लिखें /etc/init.d। यह स्क्रिप्ट एक तर्क जो हो सकता है स्वीकार करना चाहिए start, stop, force-reload, restart, या (वैकल्पिक) reloadया status। के बीच का अंतर reloadऔर restartवह यह है कि restartबराबर है करने के लिए stopके बाद start, जबकि reloadकुछ भी रोक (सेवा यह समर्थन करता है) के बिना विन्यास को पुनः लोड करता; force-reloadकरता है reload, यदि उपलब्ध हो और restartअन्यथा। उदाहरण के लिए डेबियन के साथ बूट समय पर चलने वाली मौजूदा फ़ाइलें और स्क्रिप्ट बनाना देखें ।
  • भागो update-rc.dसांकेतिक लिंक शुरू करने और अपनी सेवा बंद करने के लिए बनाने के लिए। ज्यादातर सेवाएं रनले 2, 3, 4 और 5 में चलती हैं।

ध्यान दें कि svn एक्सेस प्रदान करने के लिए, अपाचे को सेट करना और HTTP या HTTPS प्रोटोकॉल का उपयोग करना आसान हो सकता है। यह एक वेब ब्राउज़र के माध्यम से त्वरित रिपॉजिटरी ब्राउज़िंग की अनुमति देने का पक्ष लाभ है।


2

पारंपरिक यूनिक्स पृष्ठभूमि से, सेवाओं के बारे में कुछ खास नहीं है। सेवाएं सिर्फ प्रक्रिया है, लेकिन दो अपवादों के साथ: उन्हें टर्मिनल की आवश्यकता नहीं है और वे बूट पर शुरू हो जाते हैं। वे बूट पर कैसे आरंभ करते हैं, यह init पर निर्भर करता है (जो sysv init, bsd init, upstart, systemd या कुछ और हो सकता है; init के लिए अपने मैन पेज की जाँच करें) और क्या आपका टास्क के लिए रैपर या init कॉन्फ़िगरेशन का उपयोग कर रहे हैं। टर्मिनल से किसी सेवा को चलाने से आपको कोई रोक नहीं सकता है, वास्तव में यह परीक्षण के उद्देश्यों के लिए आम है।

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