Linux पर सेवाओं को सूचीबद्ध और प्रबंधित करने के लिए systemctl का उपयोग कैसे करें: शुरुआती लोगों के लिए एक संपूर्ण गाइड

目次

1. परिचय

Linux का उपयोग करते समय, कई स्थितियों में आप सेवाओं की स्थिति जांचना या सभी चल रही प्रक्रियाओं की सूची देखना चाहते हैं। ऐसे मामलों में systemctl कमांड अत्यंत उपयोगी होती है।

यह कमांड “systemd” के साथ इंटरफ़ेस करती है, जो Linux का इनिशियलाइज़ेशन सिस्टम और सर्विस मैनेजर है, और यह सेवा (यूनिट) की स्थिति जांचना, शुरू करना, रोकना, पुनः शुरू करना और सेवाओं की सूची दिखाने जैसी कई सुविधाएँ प्रदान करती है।

विशेष रूप से “systemctl के साथ सूची बनाना” के संदर्भ में, आप अपने सिस्टम की संरचना को विभिन्न कोणों से समझ सकते हैं—केवल वर्तमान में सक्रिय सेवाएँ ही नहीं, बल्कि निष्क्रिय सेवाएँ या स्वचालित रूप से शुरू होने के लिए सेट की गई सेवाएँ भी।

यह अनुभाग “systemctl” के मूलभूत पहलुओं को संक्षेप में रेखांकित करेगा, और इस लेख में आप क्या सीखेंगे, यह समझाएगा।

systemctl क्या है?

systemctl वह मानक टूल है जो systemd‑आधारित Linux वितरणों पर विभिन्न “यूनिट” जैसे सेवाएँ, टार्गेट और माउंट पॉइंट को नियंत्रित और जांचने के लिए उपयोग किया जाता है।

उदाहरण के लिए, आप इसका उपयोग Apache (httpd) या SSH जैसी सेवाओं को शुरू या बंद करने, या इन सेवाओं की स्थिति की सूची देखने के लिए करते हैं।

systemd और systemctl के बीच संबंध

systemd Linux पर बूट प्रक्रिया और सेवा प्रबंधन का मुख्य सिस्टम है, जो पुराने टूल जैसे SysVinit और Upstart को प्रतिस्थापित करता है। systemctl वह कमांड‑लाइन यूटिलिटी है जो सीधे systemd के साथ संवाद करती है।

दूसरे शब्दों में, यदि systemd “नियंत्रक” है, तो systemctl “ऑपरेटर” के रूप में कार्य करता है जो निर्देश भेजता है।

इस लेख में आप क्या सीखेंगे

यह लेख निम्नलिखित सामान्य प्रश्नों के उत्तर देता है:

  • मैं सभी वर्तमान में चल रही सेवाओं की सूची कैसे बना सकता हूँ?
  • मैं सूची में निष्क्रिय सेवाओं को कैसे शामिल करूँ?
  • मैं यह कैसे जांचूँ कि कौन सी सेवाएँ स्वचालित रूप से शुरू होने के लिए सक्षम हैं?
  • मैं परिणामों को कैसे पढ़ूँ और समझूँ?

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

2. systemctl के साथ सेवाओं की सूची बनाना

Linux सिस्टम प्रशासन में, सेवाओं की सूची को जल्दी से समझना अत्यंत आवश्यक है। systemctl कमांड के साथ आप न केवल वर्तमान में सक्रिय सेवाओं बल्कि निष्क्रिय सेवाओं और स्वचालित रूप से शुरू होने के लिए कॉन्फ़िगर की गई सेवाओं को भी आसानी से देख सकते हैं।

यहाँ हम सेवाओं की सूची बनाने के तीन मुख्य दृष्टिकोणों को समझाएँगे:

  • सक्रिय सेवाओं की सूची
  • सभी सेवाओं की सूची (निष्क्रिय सहित)
  • सेवा यूनिट फ़ाइलों की सूची (स्टार्टअप सेटिंग्स सहित)

2.1 वर्तमान में सक्रिय सेवाओं की सूची बनाना

यह देखना कि आपके सिस्टम पर कौन‑सी सेवाएँ “चल रही” हैं, इसके लिए यह मूलभूत कमांड उपयोग करें:

systemctl list-units --type=service

यह कमांड वर्तमान में सक्रिय (चल रही) सेवाओं की सूची प्रदर्शित करती है। आउटपुट में निम्नलिखित कॉलम शामिल होते हैं:

ColumnDescription
UNITName of the service (e.g., ssh.service)
LOADWhether the unit file is loaded
ACTIVEService status (e.g., active, inactive, failed)
SUBDetailed status (e.g., running, exited, dead)
DESCRIPTIONBrief description of the service

यह जानकारी आपको यह समझने में मदद करती है, उदाहरण के लिए, कि nginx वर्तमान में चल रहा है या कौन‑सी सेवाएँ सक्रिय हैं।

2.2 सभी सेवाओं की सूची बनाना, जिसमें निष्क्रिय भी शामिल हों

डिफ़ॉल्ट रूप से, list‑units केवल वर्तमान में सक्रिय सेवाओं को दिखाता है। निष्क्रिय सेवाओं को शामिल करने के लिए --all विकल्प जोड़ें:

systemctl list-units --type=service --all

यह विकल्प आपको “निष्क्रिय” स्थिति वाली सेवाओं या उन सेवाओं को देखने की अनुमति देता है जो अभी तक कभी शुरू नहीं हुई हैं।

यदि आप परिणामों को और संकीर्ण करना चाहते हैं, तो विशिष्ट स्थिति के आधार पर फ़िल्टर करने के लिए --state= विकल्प का उपयोग करें:

systemctl list-units --type=service --state=inactive

यह तब उपयोगी होता है जब आप केवल बंद (stopped) सेवाओं की जाँच करना चाहते हैं।

2.3 सेवा यूनिट फ़ाइलों की सूची बनाना

यदि आप न केवल वर्तमान स्थिति बल्कि यह भी जानना चाहते हैं कि कौन‑सी सेवाएँ सक्षम (enabled) हैं और स्वचालित रूप से शुरू होने के लिए सेट हैं, तो निम्न कमांड का उपयोग करें:

systemctl list-unit-files --type=service

यह सेवा यूनिट फ़ाइलों (कॉन्फ़िगरेशन फ़ाइलों) की सूची प्रदर्शित करता है और आपको उनकी सक्षम/अक्षम स्थिति (enabled, disabled, आदि) जांचने देता है।

STATE ValueDescription
enabledAutomatically enabled at boot
disabledNot enabled at boot; must be started manually
staticStarted as a dependency of other units; cannot be enabled/disabled directly
maskedExplicitly disabled and cannot be started (protected)

इस सूची की समीक्षा करने से आप दृश्य रूप से समझ सकते हैं कि कौन‑सी सेवाएँ बूट पर शुरू होती हैं और क्या कोई सेवा अनजाने में masked तो नहीं हो गई है।

3. systemctl के साथ बुनियादी सेवा प्रबंधन

systemctl कमांड न केवल सेवा की स्थिति जाँचता है बल्कि आपको सेवाओं को शुरू, रोक, पुनः शुरू और सक्षम या अक्षम करने की भी अनुमति देता है। यहाँ लिनक्स सिस्टम प्रबंधन में अक्सर उपयोग किए जाने वाले बुनियादी ऑपरेशन्स दिए गए हैं।

इन कमांड्स में निपुण होना दैनिक सर्वर प्रबंधन और समस्या निवारण के लिए आवश्यक है।

3.1 सेवा शुरू करना

किसी विशिष्ट सेवा को मैन्युअली शुरू करने के लिए start सबकमांड का उपयोग करें:

sudo systemctl start [service name]

उदाहरण के लिए, Apache (httpd) को शुरू करने के लिए:

sudo systemctl start httpd.service

यह सेवा को तुरंत शुरू कर देता है। यदि आप चाहते हैं कि रीबूट के बाद भी यह बना रहे, तो enable भी उपयोग करें (नीचे समझाया गया है)।

3.2 सेवा रोकना

सेवा को रोकने के लिए यह कमांड उपयोग करें:

sudo systemctl stop [service name]

उदाहरण:

sudo systemctl stop sshd.service

सेवा तब तक बंद रहेगी जब तक आप इसे स्पष्ट रूप से फिर से नहीं शुरू करते।

3.3 सेवा पुनः शुरू करना

सेवा को पुनः शुरू करने के लिए (उदाहरण के तौर पर, कॉन्फ़िगरेशन बदलने के बाद) यह कमांड उपयोग करें:

sudo systemctl restart [service name]

उदाहरण:

sudo systemctl restart nginx.service

रीस्टार्ट हमेशा सेवा को पहले रोकता है और फिर शुरू करता है, चाहे उसकी वर्तमान स्थिति कुछ भी हो।

3.4 सेवा की स्थिति जाँचना

विस्तृत सेवा स्थिति देखने के लिए status सबकमांड का उपयोग करें:

systemctl status [service name]

उदाहरण:

systemctl status mysql.service

यह वर्तमान सक्रिय स्थिति, प्रक्रिया आईडी (PID), लॉग सारांश और अधिक दिखाता है—समस्या निवारण के लिए बहुत उपयोगी।

3.5 सेवा को स्वचालित रूप से शुरू होने के लिए सक्षम करना

बूट पर सेवा को स्वचालित रूप से शुरू करने के लिए enable सबकमांड का उपयोग करें:

sudo systemctl enable [service name]

उदाहरण:

sudo systemctl enable docker.service

अब, अगली सिस्टम बूट पर सेवा स्वतः लॉन्च होगी।

3.6 सेवा को स्वचालित रूप से शुरू होने से अक्षम करना

ऑटो‑स्टार्ट को अक्षम करने के लिए disable कमांड का उपयोग करें:

sudo systemctl disable [service name]

उदाहरण:

sudo systemctl disable cups.service

यह बूट पर सेवा के शुरू होने को रोकता है।

3.7 यह जाँचना कि सेवा सक्षम है या नहीं

सेवा के स्वचालित रूप से शुरू होने (enabled) की जाँच के लिए is-enabled का उपयोग करें:

systemctl is-enabled [service name]

उदाहरण आउटपुट:

enabled

यह जल्दी से आपको सेवा की स्टार्टअप नीति बताता है।

4. systemctl के उपयोगी विकल्प और उन्नत तकनीकें

systemctl कमांड केवल बुनियादी start/stop ऑपरेशन्स तक सीमित नहीं है, बल्कि उन्नत प्रबंधन कार्यों को भी सपोर्ट करता है। यहाँ कुछ सुविधाजनक विकल्प और तकनीकें दी गई हैं जिन्हें आपको जानना चाहिए।

इन सुविधाओं का उपयोग करने से आपका लिनक्स सेवा प्रबंधन बहुत अधिक प्रभावी हो जाएगा।

4.1 सेवा निर्भरताओं की सूची बनाना

लिनक्स में कुछ सेवाएँ अन्य यूनिट्स (सेवाएँ, माउंट्स, टार्गेट्स आदि) पर निर्भर करती हैं। निर्भरताओं को देखने के लिए list-dependencies का उपयोग करें:

systemctl list-dependencies [service name]

उदाहरण:

systemctl list-dependencies nginx.service

यह कमांड ट्री फॉर्मेट में संबंधित यूनिट्स दिखाता है—स्टार्टअप क्रम और अप्रत्यक्ष निर्भरताओं का विश्लेषण करने में मददगार।

4.2 यूनिट फ़ाइल की सामग्री देखना

यदि आप किसी यूनिट की कॉन्फ़िगरेशन विवरण देखना चाहते हैं, तो वास्तविक यूनिट फ़ाइल को प्रदर्शित कर सकते हैं:

systemctl cat [service name]

उदाहरण:

systemctl cat ssh.service

यह फ़ाइल पथ और उसकी सामग्री दिखाता है, जिससे आप जल्दी से कोई भी कस्टम सेटिंग देख सकते हैं।

4.3 यूनिट फ़ाइलों को री‑लोड करना

यदि आप मैन्युअली यूनिट फ़ाइल को संशोधित करते हैं, तो बदलाव लागू करने के लिए daemon-reload का उपयोग करें:

sudo systemctl daemon-reexec

या अधिक सामान्यतः:

sudo systemctl daemon-reload

यह systemd में यूनिट फ़ाइलों को री‑लोड करता है, जिससे परिवर्तन प्रभावी हो जाते हैं। यदि सेटिंग्स लागू नहीं हो रही लगें, तो पहले इस कमांड को चलाएँ।

4.4 सेवा लॉग देखना (पूरक)

हालाँकि यह systemctl कमांड नहीं है, journalctl सेवा लॉग जाँचने के लिए उपयोगी है:

journalctl -u [service name]

उदाहरण:

journalctl -u docker.service

यह आपको स्टार्टअप त्रुटियों और रीस्टार्ट इतिहास की समीक्षा करने देता है—समस्या निवारण का एक आवश्यक चरण।

5. सामान्य समस्याएँ और समाधान

जब आप systemctl के साथ सेवाओं का प्रबंधन करते हैं, तो चीज़ें हमेशा अपेक्षित रूप से नहीं चलतीं। यह अनुभाग सामान्य समस्याओं और उनके समाधान को समझाता है।

“सेवा शुरू नहीं हो रही” या “कारण नहीं मिल रहा” जैसी स्थितियों के लिए तैयार रहें, इन बुनियादी ट्रबलशूटिंग चरणों को जानकर।

5.1 सेवा शुरू न होने पर ट्रबलशूटिंग

आपको इस प्रकार की त्रुटियाँ दिख सकती हैं:

Job for apache2.service failed because the control process exited with error code.
See "systemctl status apache2.service" and "journalctl -xe" for details.

कारण पहचानने के लिए, क्रम में नीचे दिए गए चरणों की जाँच करें:

  1. स्थिति जांचें
    systemctl status [service name]
    
  1. त्रुटि लॉग जांचें
    journalctl -xe
    
  1. यूनिट फ़ाइलें पुनः लोड करें
    यदि आपने अभी-अभी एक यूनिट फ़ाइल संपादित की है, तो इसे पुनः लोड करें:
    sudo systemctl daemon-reload
    
  1. पोर्ट टकराव जांचें
    देखें कि क्या कोई अन्य प्रक्रिया पहले से ही उस पोर्ट का उपयोग कर रही है:
    sudo netstat -tulnp | grep [port number]
    

5.2 status कमांड में त्रुटि संदेश कैसे पढ़ें

जब आप systemctl status चलाते हैं, तो आपको सेवा की स्थिति के साथ-साथ नवीनतम लॉग संदेश भी दिखते हैं। उदाहरण के लिए:

● nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled)
   Active: failed (Result: exit-code) since Fri 2025-04-18 12:00:00 JST; 5s ago
  Process: 12345 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=1/FAILURE)

यह आपको जल्दी से विफलताओं (जैसे “Active: failed”, “status=1/FAILURE”) और कौन सी प्रक्रिया ने त्रुटि लौटाई, पहचानने में मदद करता है।

Loaded पंक्ति यूनिट फ़ाइल का पथ दिखाती है, जिससे संपादन के लिए कॉन्फ़िगरेशन फ़ाइल को आसानी से पहचाना जा सकता है।

5.3 जब सेवाएँ अनपेक्षित रूप से बंद हो जाएँ

यदि कोई सेवा शुरू होती है लेकिन तुरंत बंद हो जाती है, तो सामान्य कारणों में शामिल हैं:

  • कॉन्फ़िगरेशन फ़ाइलों में त्रुटियाँ
  • पोर्ट टकराव
  • आवश्यक फ़ाइलें या डायरेक्टरी अनुपलब्ध
  • पर्याप्त निष्पादन अनुमतियों की कमी

समाधान के लिए, निम्नलिखित प्रयास करें:

  • कॉन्फ़िगरेशन फ़ाइलों की जाँच और सत्यापन करें (जैसे nginx -t या apachectl configtest)
  • journalctl -u [service name] के साथ विस्तृत लॉग देखें
  • आवश्यक डायरेक्टरी (जैसे /var/run/xxx) मौजूद हों; यदि आवश्यक हो तो उन्हें बनाएं

5.4 masked स्थिति में सेवाएँ शुरू नहीं हो पा रही हैं

यदि आप यह त्रुटि देखते हैं:

Failed to start example.service: Unit example.service is masked.

सेवा masked स्थिति में है (पूरी तरह से अक्षम और शुरू होने से रोकी गई)। इसे अनमास्क करने के लिए:

sudo systemctl unmask [service name]

फिर आप सामान्य रूप से सेवा को शुरू कर सकते हैं।

6. सारांश

Linux में सेवा प्रबंधन दैनिक सिस्टम संचालन का एक आवश्यक भाग है। systemctl कमांड एक केंद्रीय भूमिका निभाता है, जिससे आप सेवाओं की सूची देख सकते हैं और उन्हें प्रभावी ढंग से प्रबंधित कर सकते हैं।

इस लेख ने “systemctl list” कीवर्ड का उपयोग करके निम्नलिखित बिंदुओं को समझाया है:

systemctl कमांड के साथ आप क्या कर सकते हैं (समीक्षा)

  • सेवाओं की सूची जांचें
  • वर्तमान में सक्रिय सेवाओं को दिखाएँ (list-units --type=service)
  • सभी सेवाओं की सूची, जिसमें निष्क्रिय भी शामिल हैं (--all या --state= विकल्प)
  • सेवा यूनिट फ़ाइलें और उनका स्टार्टअप स्थिति दिखाएँ (list-unit-files)
  • बुनियादी सेवा संचालन
  • शुरू, रोकें, पुनः शुरू, और स्थिति जांचें (start / stop / restart / status)
  • स्वचालित स्टार्टअप सक्षम/अक्षम करें (enable / disable / is-enabled)
  • उन्नत संचालन और ट्रबलशूटिंग
  • निर्भरताएँ जांचें, यूनिट फ़ाइलें देखें, कॉन्फ़िगरेशन पुनः लोड करें
  • लॉग और स्थिति जांच के माध्यम से त्रुटियों की जाँच करें

सेवा प्रबंधन के लिए सर्वोत्तम प्रथाएँ

  • परिवर्तन करने से पहले हमेशा स्थिति जांचें (status कमांड)
  • ऑटो-स्टार्ट स्थिति जानें (is-enabled कमांड)
  • परिवर्तन करने के बाद हमेशा daemon-reload चलाएँ
  • समस्याओं के लिए, journalctl के साथ लॉग जांचें

इन जैसी सूक्ष्म जाँचें Linux सिस्टम प्रशासन में स्थिर सेवा डिलीवरी और तेज़ ट्रबलशूटिंग सुनिश्चित करती हैं।

आगे के अध्ययन के लिए

यदि आप और अधिक सीखना चाहते हैं, तो निम्नलिखित विषयों का अन्वेषण करने पर विचार करें:

  • systemd लक्ष्य (और रनलेवल्स से अंतर)
  • systemd-timer के साथ नियोजित कार्य
  • कस्टम यूनिट फ़ाइलें कैसे बनाएं और प्रबंधित करें

7. अक्सर पूछे जाने वाले प्रश्न (FAQ)

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

Q1. systemctl और service कमांड में क्या अंतर है?

A1.
systemctl systemd-आधारित सेवा प्रबंधन कमांड है, और यह अधिकांश आधुनिक Linux वितरणों (Ubuntu, CentOS, Fedora, आदि) के लिए मानक है।
इसके विपरीत, service पुराने SysVinit सिस्टम से आता है। जबकि इसे कभी‑कभी संगतता के लिए रखा जाता है, systemd वातावरण में systemctl का उपयोग करने की सलाह दी जाती है।

Q2. list-units और list-unit-files में क्या अंतर है?

A2.

  • list-units वर्तमान में लोड किए गए यूनिट्स (सक्रिय या पहले उपयोग किए गए) को दिखाता है।
  • list-unit-files सभी यूनिट फ़ाइलें और उनका सक्षम/अक्षम स्थिति सूचीबद्ध करता है। इसे “अब क्या चल रहा है” और “क्या चलाने के लिए कॉन्फ़िगर किया गया है” के अंतर के रूप में समझें।

Q3. क्या मैं किसी सेवा को “static” स्थिति में शुरू कर सकता हूँ?

A3.
हाँ, आप मैन्युअल रूप से static स्थिति में किसी सेवा को start कर सकते हैं, लेकिन आप इसे स्वचालित रूप से शुरू होने के लिए enable नहीं कर सकते। ऐसा इसलिए है क्योंकि static सेवाओं को अन्य यूनिट्स की निर्भरताओं के रूप में शुरू करने के लिए डिज़ाइन किया गया है।

Q4. मैं masked सेवा को शुरू नहीं कर पा रहा हूँ। मुझे क्या करना चाहिए?

A4.
masked का अर्थ “पूरी तरह से अक्षम” होता है। अनमास्क करने के लिए:

sudo systemctl unmask [service name]

इसके बाद, आप इसे सामान्य रूप से शुरू कर सकते हैं।

Q5. क्या सेवा स्थिति सूचीबद्ध करने के लिए कोई GUI है?

A5.
आपके वितरण के आधार पर, gnome-system-monitor, KSysGuard या Cockpit जैसे टूल्स आपको GUI के माध्यम से सेवा स्थिति जांचने की अनुमति दे सकते हैं। हालांकि, उन्नत कार्यों के लिए systemctl अभी भी सबसे भरोसेमंद विधि है।

Q6. कस्टम यूनिट फ़ाइलें कहाँ रखनी चाहिए?

A6.
आमतौर पर, इन्हें /etc/systemd/system/ में रखें। संपादन के बाद, यह कमांड चलाना न भूलें:

sudo systemctl daemon-reload

फिर सामान्य रूप से start या enable के साथ प्रबंधित करें।

侍エンジニア塾