Linux में सर्विस फ़ाइल कैसे बनाएं

Linux Mem Sarvisa Fa Ila Kaise Bana Em



Systemd init सिस्टम अब लगभग सभी Linux वितरणों का एक हिस्सा है। एक प्रशासक या डेवलपर के रूप में, आप ऐसी सेवाएँ बनाते हैं जिन्हें सिस्टमडी प्रबंधित कर सकता है। उदाहरण के लिए, यदि आप सेवाओं को बूट पर लॉन्च करना चाहते हैं या उन्हें मैन्युअल रूप से नियंत्रित करना चाहते हैं, तो यह एक कस्टम सेवा फ़ाइल के माध्यम से किया जा सकता है।

इस ट्यूटोरियल में, मैं लिनक्स पर सिस्टमडी सर्विस फाइल बनाने का तरीका बताऊंगा।







सर्विस फ़ाइल क्या है

आगे बढ़ने से पहले, आइए समझें कि सिस्टमडी सर्विस फ़ाइल क्या है और इसे लिनक्स पर कैसे बनाया जाता है।



सिस्टमडी सेवा फ़ाइल में सेवा को प्रबंधित करने के लिए सिस्टमडी के लिए निर्धारित निर्देश शामिल हैं। इसमें आम तौर पर तीन खंड होते हैं:



  • इकाई
  • सेवा
  • स्थापित करना

इकाई अनुभाग में सेवा के बारे में बुनियादी जानकारी जैसे संक्षिप्त विवरण, दस्तावेज़ीकरण पृष्ठ और निर्भरता का पथ शामिल है। स्थापित करना अनुभाग वैकल्पिक है, लेकिन आम तौर पर यह प्रबंधन करता है कि सेवा किस सिस्टम स्थिति में सक्षम होनी चाहिए।





सेवा अनुभाग आमतौर पर यूनिट और इंस्टाल अनुभाग के बीच सैंडविच होता है। इसमें मुख्य रूप से सेवा का प्रकार और निष्पादनयोग्य का पथ शामिल है जो अनिवार्य रूप से सिस्टमडी द्वारा सेवा को लागू करने पर निष्पादित करने के लिए आदेश हैं।

यहाँ एक विशिष्ट सेवा फ़ाइल संरचना कैसी दिखती है।



[ इकाई ]

निर्देश1 =निर्देश

निर्देश2 =निर्देश



[ सेवा ]

निर्देश1 =निर्देश

निर्देश2 =निर्देश



[ स्थापित करना ]

निर्देश1 =निर्देश

निर्देश2 =निर्देश

यहां, निर्देश ऐसे पैरामीटर हैं जो अपना संबंधित इनपुट लेते हैं। उदाहरण के लिए, विवरण निर्देश सेवा के नाम की एक स्ट्रिंग लेता है। एक समान तरीके से, ExecStart निष्पादन योग्य के पूर्ण पथ को ध्यान में रखता है।

की एक विशिष्ट सेवा फ़ाइल ssh.सेवा नीचे दिया गया है.

सर्विस फ़ाइल कैसे बनाएं

सिस्टमडी सेवा बनाने के लिए प्रमुख निर्देशों को समझना आवश्यक है। इस गाइड में, मैं उन आवश्यक निर्देशों को शामिल करूंगा जो आपको पूरी तरह कार्यात्मक सेवा फ़ाइल बनाने में मदद कर सकते हैं।

सेवा फ़ाइल बनाने में कई चरण शामिल होते हैं, आइए स्क्रिप्ट फ़ाइल बनाने से शुरुआत करें।

टिप्पणी: नीचे उल्लिखित विधि को जारी रखने के लिए, आपके पास रूट विशेषाधिकार होने चाहिए।

1. एक स्क्रिप्ट बनाना

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

आइए वर्तमान निर्देशिका में के नाम से एक स्क्रिप्ट बनाएं myscript.sh नैनो संपादक का उपयोग करना।

सूडो नैनो myscript.sh

अब नीचे दी गई स्क्रिप्ट को फाइल में जोड़ें और दबाकर सेव करें Ctrl+x और तब और .

#!/बिन/बैश

गूंज '>>यहां आपके सिस्टम का अपटाइम है<<' > घर / वह स्वयं / myfile.txt

अपटाइम >> घर / वह स्वयं / myfile.txt

गूंज '>>यहां आपके सिस्टम का मेमोरी उपयोग है<<' >> / घर / वह स्वयं / myfile.txt

मुक्त -एम >> घर / वह स्वयं / myfile.txt

नींद 60

स्क्रिप्ट में कुछ इको स्ट्रिंग्स और शामिल हैं अपटाइम और मुक्त आदेश.

अपटाइम लिनक्स पर कमांड का उपयोग यह प्रिंट करने के लिए किया जाता है कि कोई सिस्टम कितने समय से चल रहा है, और पिछले 1, 5 और 15 मिनट के औसत सिस्टम लोड के साथ कितने उपयोगकर्ता जुड़े हुए हैं।

मुक्त कमांड का उपयोग सिस्टम के मेमोरी उपयोग को प्रिंट करने के लिए किया जाता है, जबकि -एम फ़्लैग का उपयोग आउटपुट को प्रिंट करने के लिए किया जाता है एमबीएस .

टेक्स्ट फ़ाइल में जानकारी सहेजने के लिए, हम विशेष ऑपरेटरों का उपयोग करते हैं जिन्हें पुनर्निर्देशन ऑपरेटर कहा जाता है। > ऑपरेटर का उपयोग उल्लिखित टेक्स्ट फ़ाइल में टेक्स्ट डालने के लिए किया जाता है। हालाँकि, यदि फ़ाइल पहले से मौजूद नहीं है, तो इसे बनाया जाएगा। जब >> फ़ाइल में टेक्स्ट जोड़ने के लिए ऑपरेटर का उपयोग किया जाता है। नींद कमांड का उपयोग सेवा की गतिविधि को न्यूनतम एक मिनट की अवधि तक बनाए रखने के लिए किया जाता है।

अब, आवश्यक अनुमतियाँ देकर स्क्रिप्ट को निष्पादन योग्य बनाएं।

सूडो चामोद +x myscript.sh

स्क्रिप्ट के पास अब निष्पादन की अनुमति है, आइए अगले भाग पर आगे बढ़ें।

टिप्पणी: सेवा फ़ाइल को त्रुटि-मुक्त बनाने के लिए, बैश स्क्रिप्ट में फ़ाइल के पूर्ण पथ का उपयोग करें।

2. एक .service फ़ाइल बनाना

इसके बाद, के साथ एक सेवा फ़ाइल बनाएँ ।सेवा विस्तार। सेवा फ़ाइल अवश्य बनाई जानी चाहिए /etc/systemd/system निर्देशिका। सबसे पहले, का उपयोग करके इस निर्देशिका पर नेविगेट करें सीडी आज्ञा।

सीडी / वगैरह / systemd / प्रणाली

आप किसी भी निर्देशिका में सेवा फ़ाइल बना सकते हैं, और बाद में उस फ़ाइल को इस निर्देशिका में ले जा सकते हैं।

मैं एक सेवा फ़ाइल बना रहा हूँ मेरीसेवा.सेवा नाम।

सूडो नैनो मेरीसेवा.सेवा

अब, फ़ाइल में निम्न पंक्तियाँ जोड़ें।

[ इकाई ]

विवरण =मेरी सेवा

[ सेवा ]

प्रकार =सरल

ExecStart = / बिन / दे घुमा के / घर / वह स्वयं / स्क्रिप्ट.श

पुनः आरंभ करें =असफलता पर

[ स्थापित करना ]

वांटेडबाय =बहु-उपयोगकर्ता.लक्ष्य

ध्यान दें कि [इकाई], [सेवा], और [स्थापित करना] हैं अक्षर संवेदनशील . यदि उनमें से किसी का भी गलत उल्लेख किया गया है, जैसे कि [यूनिट], या [सेवा], तो सेवा फ़ाइल काम नहीं करेगी।

सेवा का नाम इस प्रकार निर्दिष्ट है मेरी सेवा में विवरण का निर्देश [इकाई] अनुभाग।

प्रकार सेवा का है सरल में [सेवा] अनुभाग, जो डिफ़ॉल्ट प्रकार है. फोर्किंग , एक शॉट , सूचित करें , dbus , और निष्क्रिय कुछ अन्य प्रकार हैं।

यदि आप सेवा को उपयोगकर्ता-विशिष्ट बनाना चाहते हैं, तो उपयोगकर्ता निर्देश का उपयोग उपयोगकर्ता के उपयोगकर्ता नाम के साथ भी किया जा सकता है। इस निर्देश का उपयोग करने से सेवा उपयोगकर्ता की अनुमति पर निर्भर हो जाएगी।

जब ExecStart निर्देश में निष्पादन योग्य का पूरा पथ शामिल है। उपरोक्त उदाहरण में, स्क्रिप्ट फ़ाइल myscript.sh में संग्रहित है /घर/सैम/ निर्देशिका। यह निर्देश वास्तव में प्रबंधित करता है कि सिस्टमडी द्वारा किसी सेवा को लागू किए जाने पर क्या निष्पादित किया जाए। यदि कमांड का पूर्ण पथ निर्दिष्ट नहीं है, तो इसे स्वचालित रूप से पूर्ण पथों को ठीक करने के लिए हल किया जाएगा /usr/स्थानीय/बिन , /usr/bin/, और /बिन . निष्पादन योग्य नाम का उपयोग करना तब तक बिल्कुल ठीक है जब तक वे मानक कमांड निर्देशिकाओं में हैं, हालांकि, अन्यथा पूर्ण पथ का उल्लेख करें। ध्यान दें कि एकाधिक कमांड का भी उपयोग किया जा सकता है जो अर्धविराम (;) द्वारा अलग किए गए हैं।

[स्थापित करना] अनुभाग वैकल्पिक है; हालाँकि, यह इंगित करता है कि सेवा कैसे सक्षम है। वांटेडबाय निर्देश रन-स्तरीय लक्ष्य फ़ाइलों को पैरामीटर के रूप में लेता है। विभिन्न लक्ष्य फ़ाइलें सिस्टम के विभिन्न रन-स्तरों को इंगित करती हैं जैसे कि बिजली बंद , बचाव , बहु उपयोगकर्ता , चित्रमय , और रिबूट .

बहु-उपयोगकर्ता.लक्ष्य इसका मतलब है कि सेवा तब सक्षम की जाएगी जब सिस्टम बहु-उपयोगकर्ता गैर-ग्राफ़िकल सत्रों की अनुमति देने की स्थिति में होगा।

3. सेवा सक्रिय करना

सेवा को सक्रिय करने के लिए, सबसे पहले, सिस्टमड कॉन्फ़िगरेशन का उपयोग करके पुनः लोड करें systemctl उपयोगिता।

सूडो systemctl डेमॉन-रीलोड

इसके बाद, सेवा को फिर से सक्रिय करें systemctl के साथ आदेश दें सक्षम .

सूडो systemctl सक्षम मेरीसेवा.सेवा

सत्यापित करने के लिए, का उपयोग करके सेवा की स्थिति जांचें systemctl स्थिति आज्ञा।

सेवा सफलतापूर्वक चल रही है.

अब, आइए टेक्स्ट फ़ाइल पढ़ें myfile.txt में बनाई गई सेवा /घर निर्देशिका।

सामान्य उपयोगकर्ता के लिए सिस्टमड सर्विस फ़ाइल कैसे बनाएं

सामान्य उपयोगकर्ता के लिए सेवा फ़ाइल बनाने की प्रक्रिया व्यवस्थापक द्वारा सेवा फ़ाइल बनाने की विधि के समान है। हालाँकि, सामान्य उपयोगकर्ताओं के लिए सेवा फ़ाइल को सहेजने की निर्देशिका अलग है। सामान्य उपयोगकर्ताओं को अपनी सेवा फ़ाइलें इसमें रखनी होंगी ~/.config/systemd/user . यह निर्देशिका का उपयोग करके बनाई जानी चाहिए mkdir आज्ञा।

mkdir ~ / .config / systemd / उपयोगकर्ता

एक सामान्य उपयोगकर्ता द्वारा सेवा को सक्रिय करने के लिए -उपयोगकर्ता कमांड के साथ डाला गया है systemctl के बजाय सूडो .

systemctl --उपयोगकर्ता डेमन-पुनः लोड करें

systemctl --उपयोगकर्ता सक्षम सेवा-नाम.सेवा

systemctl --उपयोगकर्ता स्थिति सेवा-नाम.सेवा

-उपयोगकर्ता विकल्प का उपयोग उपयोगकर्ता की सिस्टमड सेवा फ़ाइलों को प्रबंधित करने के लिए किया जाता है।

सर्विस फ़ाइल को कैसे हटाएं

सेवा फ़ाइल को हटाने के लिए, सबसे पहले, सेवा को रोकना होगा।

सूडो systemctl रोकें SERVICE-NAME.service

का उपयोग करके स्थिति की जाँच करें systemctl स्थिति यह जानने के लिए कमांड दें कि सेवा बंद है या नहीं। फिर का उपयोग करके सेवा फ़ाइल को हटा दें आर एम आज्ञा।

सूडो आर एम / वगैरह / systemd / प्रणाली / सेवा-नाम.सेवा

अब, पुनः लोड करें systemd विन्यास।

सूडो systemctl डेमॉन-रीलोड

निष्कर्ष

कस्टम सिस्टमड सेवा विभिन्न परिदृश्यों में लाभप्रद है। इस गाइड में, हमने सीखा कि सिस्टम एडमिनिस्ट्रेटर के लिए कस्टम सिस्टमड सर्विस फाइल कैसे बनाई जाती है और सामान्य उपयोगकर्ता सर्विस फाइल कैसे बना सकते हैं। इसके अलावा, हम सेवा फ़ाइल को हटाने की प्रक्रिया भी देखते हैं।