Managing Linux Services With Systemd
Systemd Linux-आधारित ऑपरेटिंग सिस्टम के लिए एक सिस्टम और सर्विस मैनेजर है। इसे पारंपरिक सिस्टम V init सिस्टम को बदलने के लिए डिज़ाइन किया गया है जो Linux के पुराने संस्करणों में इस्तेमाल किया गया था। सिस्टमड का व्यापक रूप से आधुनिक लिनक्स वितरण जैसे फेडोरा, डेबियन, उबंटू और आर्क लिनक्स पर उपयोग किया जाता है। इस लेख में, हम चर्चा करेंगे कि Linux Services को Systemd के साथ कैसे प्रबंधित किया जाए।
Linux Services क्या हैं?
Linux Services पृष्ठभूमि प्रक्रियाएं हैं जो लगातार पृष्ठभूमि में चलती हैं और सिस्टम को विभिन्न प्रकार्यात्मकताएं प्रदान करती हैं। वे आमतौर पर बूट समय पर शुरू होते हैं और तब तक चलते हैं जब तक सिस्टम बंद नहीं हो जाता। सेवाएँ सिस्टम-स्तर या उपयोगकर्ता-स्तर हो सकती हैं। सिस्टम-स्तरीय सेवाएं उच्च विशेषाधिकारों के साथ चलती हैं और नेटवर्किंग, डिस्क प्रबंधन और सिस्टम मॉनिटरिंग जैसी कोर सिस्टम कार्यात्मकताओं के लिए जिम्मेदार होती हैं।
उपयोगकर्ता-स्तरीय सेवाएँ व्यक्तिगत उपयोगकर्ताओं द्वारा चलाई जाती हैं और उपयोगकर्ता-विशिष्ट कार्यात्मकताएँ जैसे फ़ाइल साझाकरण, मुद्रण और मीडिया स्ट्रीमिंग प्रदान करने के लिए ज़िम्मेदार होती हैं।
Systemd क्या है?
Systemd Linux-आधारित ऑपरेटिंग सिस्टम के लिए एक सिस्टम और सर्विस मैनेजर है। इसे पारंपरिक सिस्टम V init सिस्टम को बदलने के लिए डिज़ाइन किया गया है जो Linux के पुराने संस्करणों में इस्तेमाल किया गया था। Systemd बहुत सारी कार्यात्मकताएँ प्रदान करता है जो पारंपरिक init सिस्टम में गायब थीं, जैसे समानांतर सेवा स्टार्टअप, निर्भरता प्रबंधन और माँग पर सेवा सक्रियण। सिस्टमड का व्यापक रूप से आधुनिक लिनक्स वितरण जैसे फेडोरा, डेबियन, उबंटू और आर्क लिनक्स पर उपयोग किया जाता है।
Systemd के साथ Services का प्रबंधन
सिस्टमड कमांड का एक सेट प्रदान करता है जिसका उपयोग सेवाओं (Services) को प्रबंधित करने के लिए किया जा सकता है। इन आदेशों का उपयोग सेवाओं की स्थिति को शुरू करने, रोकने, पुनः आरंभ करने, सक्षम करने, अक्षम करने और देखने के लिए किया जा सकता है। इस खंड में, हम कुछ सबसे अधिक उपयोग किए जाने वाले सिस्टमड कमांड पर चर्चा करेंगे।
systemctl start [service-name]: इस कमांड का उपयोग सर्विस शुरू करने के लिए किया जाता है। उदाहरण के लिए, अपाचे वेब सर्वर शुरू करने के लिए, आप निम्न आदेश का उपयोग कर सकते हैं:
systemctl start httpd
systemctl stop [service-name]: इस कमांड का इस्तेमाल किसी सर्विस को बंद करने के लिए किया जाता है। उदाहरण के लिए, अपाचे वेब सर्वर को रोकने के लिए, आप निम्न आदेश का उपयोग कर सकते हैं:
systemctl stop httpd
systemctl restart [service-name]: इस आदेश का उपयोग किसी सेवा को पुनरारंभ करने के लिए किया जाता है। उदाहरण के लिए, अपाचे वेब सर्वर को पुनरारंभ करने के लिए, आप निम्न आदेश का उपयोग कर सकते हैं:
systemctl restart httpd
systemctl enable [service-name]: इस कमांड का उपयोग किसी सेवा को बूट समय पर स्वचालित रूप से प्रारंभ करने के लिए सक्षम करने के लिए किया जाता है। उदाहरण के लिए, अपाचे वेब सर्वर को बूट समय पर स्वचालित रूप से प्रारंभ करने के लिए सक्षम करने के लिए, आप निम्न आदेश का उपयोग कर सकते हैं:
systemctl enable httpd
systemctl disable [service-name]: इस कमांड का उपयोग किसी सेवा को बूट समय पर स्वचालित रूप से प्रारंभ होने से अक्षम करने के लिए किया जाता है। उदाहरण के लिए, अपाचे वेब सर्वर को बूट समय पर स्वचालित रूप से प्रारंभ होने से अक्षम करने के लिए, आप निम्न आदेश का उपयोग कर सकते हैं:
systemctl disable httpd
systemctl status [service-name]: इस आदेश का उपयोग किसी सेवा की स्थिति देखने के लिए किया जाता है। उदाहरण के लिए, अपाचे वेब सर्वर की स्थिति देखने के लिए, आप निम्न आदेश का उपयोग कर सकते हैं:
systemctl status httpd
Systemd Units
सिस्टमड इकाइयां कॉन्फ़िगरेशन फाइलें हैं जो एक सेवा, सॉकेट, डिवाइस, आरोह बिंदु, या अन्य सिस्टम संसाधन का वर्णन करती हैं जो सिस्टमड प्रबंधित करता है। इकाइयाँ /etc/systemd/system निर्देशिका में स्थित हैं, और उनके फ़ाइल नामों में सेवाओं के लिए .service एक्सटेंशन, सॉकेट्स के लिए .socket, और इसी तरह अन्य हैं।
प्रत्येक इकाई फ़ाइल में उस संसाधन के बारे में जानकारी होती है जिसे वह प्रबंधित करता है, जैसे कि चलाने के लिए सेवा बाइनरी, उपयोगकर्ता और समूह जिसे सेवा के रूप में चलाना चाहिए, और सेवा की अन्य सेवाओं पर निर्भरता।
एक Systemd Service बनाना
एक नई सिस्टमड सेवा बनाने के लिए, आपको एक नई इकाई फ़ाइल बनाने की आवश्यकता है। यूनिट फ़ाइल का नाम उस सेवा के नाम पर होना चाहिए जिसे वह प्रबंधित करती है और उसमें एक .service एक्सटेंशन होना चाहिए। यूनिट फ़ाइल /etc/systemd/system निर्देशिका में स्थित होनी चाहिए। यूनिट फ़ाइल में निम्नलिखित अनुभाग होने चाहिए:
[Unit]: इस खंड में सेवा के लिए मेटाडेटा शामिल है, जैसे सेवा का नाम, विवरण और निर्भरताएँ। निर्भरता को आवश्यकताएँ और बाद के निर्देशों का उपयोग करके निर्दिष्ट किया जा सकता है। आवश्यकता निर्देश उन सेवाओं को निर्दिष्ट करता है जिन पर वर्तमान सेवा निर्भर करती है, और बाद के निर्देश उन सेवाओं को निर्दिष्ट करते हैं जो वर्तमान सेवा से पहले शुरू होनी चाहिए।
[Service]: इस खंड में सेवा के लिए कॉन्फ़िगरेशन शामिल है। सेवा कॉन्फ़िगरेशन में सेवा बाइनरी का पथ, उपयोगकर्ता और समूह शामिल है जिसे सेवा के रूप में चलाना चाहिए, और कोई भी पर्यावरण चर जो सेवा के लिए आवश्यक है।
[Install]: इस खंड में सेवा को स्थापित करने और सक्षम करने के लिए कॉन्फ़िगरेशन शामिल है। इंस्टॉल सेक्शन में वांटेडबी निर्देश शामिल है, जो उस लक्ष्य को निर्दिष्ट करता है जिसके लिए सेवा को स्थापित और सक्षम किया जाना चाहिए।
यहाँ एक साधारण वेब सर्वर के लिए एक यूनिट फ़ाइल का एक उदाहरण दिया गया है:
[Unit]
Description=My Web Server
After=network.target
[Service]
User=apache
Group=apache
ExecStart=/usr/sbin/httpd -DFOREGROUND
EnvironmentFile=/etc/sysconfig/httpd
Type=forking
[Install]
WantedBy=multi-user.target
इस उदाहरण में, [इकाई] खंड निर्दिष्ट करता है कि सेवा network.target पर निर्भर करती है और इसके बाद शुरू होनी चाहिए। [सेवा] खंड निर्दिष्ट करता है कि सेवा को अपाचे उपयोगकर्ता और समूह के रूप में चलाना चाहिए और /usr/sbin/httpd बाइनरी को -DFOREGROUND विकल्प के साथ शुरू करना चाहिए।
टाइप = फोर्किंग विकल्प निर्दिष्ट करता है कि सेवा एक फोर्किंग सेवा है, जिसका अर्थ है कि यह पृष्ठभूमि में चलने के लिए एक बच्चे की प्रक्रिया को फोर्क करती है। EnvironmentFile निर्देश सेवा के लिए पर्यावरण फ़ाइल का स्थान निर्दिष्ट करता है। [इंस्टॉल] अनुभाग निर्दिष्ट करता है कि सेवा बहु-उपयोगकर्ता लक्ष्य के लिए स्थापित और सक्षम होनी चाहिए।
यूनिट फ़ाइल बनाने के बाद, आप सेवा की स्थिति को शुरू करने, रोकने, पुनरारंभ करने, सक्षम करने, अक्षम करने या देखने के लिए systemctl कमांड का उपयोग कर सकते हैं। उदाहरण के लिए, वेब सर्वर प्रारंभ करने के लिए, आप निम्न आदेश का उपयोग कर सकते हैं:
systemctl start mywebserver.service
निष्कर्ष
Linux-आधारित ऑपरेटिंग सिस्टम के लिए Systemd एक शक्तिशाली सिस्टम और सर्विस मैनेजर है। यह बहुत सारी कार्यात्मकताएं प्रदान करता है जो पारंपरिक init सिस्टम में गायब थीं, जैसे समानांतर सेवा स्टार्टअप, निर्भरता प्रबंधन और मांग पर सेवा सक्रियण।
सिस्टमड इकाइयां कॉन्फ़िगरेशन फाइलें हैं जो एक सेवा, सॉकेट, डिवाइस, आरोह बिंदु, या अन्य सिस्टम संसाधन का वर्णन करती हैं जो सिस्टमड प्रबंधित करता है। systemctl कमांड और systemd यूनिट का उपयोग करके, आप Linux सेवाओं को आसानी से प्रबंधित कर सकते हैं और अपने सिस्टम के लिए नई सेवाएँ बना सकते हैं।