Linux में कोई भी Executable एक सर्विस (Service) के रूप में चलाना

कोई भी ऐक्सेय़क्युअलेबल (executable) को Linux सर्विस (service) के रूप में चलाना

Page content

यहाँ एक सेट के निर्देश हैं, कैसे कोई भी ऐक्सुअल (Executable) Linux में सर्विस (Service) के रूप में चलाना Systemd के साथ।

linux cogs ऊपर एक AI-जनित (AI-generated) प्रतिबद्धता (image) (by Flux 1 dev model) है जो Linux के स्वतंत्र (DIY) दृष्टिकोण (approach) का प्रतिनर्थक (representing) है।

Systemd

Systemd एक प्रणाली (system and services manager) और सेवा (services) प्रबंधक (manager) है, जो कुछ Linux डिस्ट्रो (distros) में उपयोगी उज़्ज़ला (initialization tool) है।

Systemd के साथ प्रसिद्ध (popular) डिस्ट्रो (distros) कुछ हैं:

  • Ubuntu 16.04 या उसके बादवाले
  • Debian Jessie या उसके बादवाले
  • Arch Linux
  • CentOS 7 / RHEL 7 या उसके बादवाले
  • Fedora 15 या उसके बादवाले

systemctl

systemctl एक कमांडलाइन (commandline) सुविधा है जो systemd को नियंत्रित करने में मदद करती है।

सभी सर्विसेज़ (services) की सूची

सभी सर्विसेज़ (services) को देखने के लिए निम्नलिखित कमांड (command) चलाइए:

systemctl list-units --type=service

सर्विस (Service) फ़ाइल बनाना

सर्विस (service) डायरेक्ट्री (directory) में जाइए और एक नया .service फ़ाइल बनाइए:

sudo nano /etc/systemd/system/your_service_name.service

सर्विस (Service) फ़ाइल को संरेखित करना:

फ़ाइल में निम्नलिखित सामग्री (content) जोड़िए, आवश्यकताओं के अनुसार मूल्यों को समायोजित करें:

[Unit]
Description=Your Service Description
After=network.target

[Service]
Type=simple
User=root
WorkingDirectory=/path/to/your/executable/directory
ExecStart=/path/to/your/executable
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target

फ़ाइल को बचाइए और बंद करें।

स्थिरीकृत (Stable) सर्विस (Service) प्रारंभ

अगर आप सोचते हैं कि सर्विस (service) प्रारंभ के दौरान समयबद्धता (timing issue) हो सकती है, तो अपनी सर्विस (Service) कॉन्फ़िग (config) में एक देरी (delay) जोड़ना विचारणीय हो सकता है:

[Service]
ExecStartPre=/bin/sleep 10

सर्विस (Service) प्राधिकरण (dependencies)

अपनी सर्विस (service) के प्राधिकरण (dependencies) को संरेखित करने के लिए: सर्विस (Service) कॉन्फ़िग (config) फ़ाइल के [Unit] विभाग में,

निम्नलिखित संकेतवादी (directive) जोड़िए:

यहाँ After= का उपयोग पहले सर्विस (service) के लिए किया जाता है:

After=network.target other_service.service

Requires= का उपयोग मजबूत प्राधिकरण (hard dependencies) को परिभाषित करने के लिए किया जाता है:

Requires=required_service.service

Wants= का उपयोग सूखी (soft dependency) को परिभाषित करने के लिए किया जाता है:

Wants=optional_service.service

systemd को रिफ़레श (Reload) करें

sudo systemctl daemon-reload

सर्विस (Service) प्राधिकरण (dependencies) जांचें

sudo systemctl list-dependencies your_service_name.service

सर्विस (Service) को बूट (boot) से प्रारंभ करना

sudo systemctl enable your_service_name.service

अपनी सर्विस (service) को बूट (boot) से प्रारंभ करने के लिए:

sudo systemctl is-enabled your_service_name.service

सर्विस (Service) चलाना

sudo systemctl start your_service_name.service
# या
sudo systemctl restart your_service_name.service

सर्विस (Service) का स्थिति (status) जांचें

अगर कोई गड़बड़ी हुई - Linux में सर्विस (service) के लॉग (logs) और स्थिति (status) को जांचें:

sudo systemctl status your_service_name.service

या

sudo journalctl -u your_service_name.service

Python स्क्रिप्टों के लिए

ExecStart=/path/to/conda/envs/my_env_name/bin/python /path/to/executable.py

टिप्पणियाँ (Comments)

आप अब systemctl कमांडों का उपयोग करके अपनी सर्विस (service) को प्रबंधित कर सकते हैं, जैसे start, stop, restart और status.

जहाँ कमांड (command) में पैरामीटर (parameters) हों, तो सर्विस (Service) फ़ाइल में ExecStart पंक्ति के अनुसार समायोजित करें।

उदाहरण के लिए, अगर आप एक Java ऐप (application) चलाना चाहते हैं, तो ExecStart पंक्ति में पूरी Java कमांड (command) शामिल करें।

ध्यान रखें कि फ़ाइल परमिसन (permissions) और स्वामित्व (ownership) को आवश्यकतौर पर समायोजित करें, और यह सुनिश्चित करें कि ऐक्सुअल (executable) के पास सही execute परमिसन हों।

chkservice से systemd सर्विसेज़ (services) का नियंत्रण

इसके बजाय,

sudo systemctl start some-service.service
# या
sudo systemctl restart some-service.service

आप एक कंसोल UI सुविधा (tool) का उपयोग कर सकते हैं। आसान और हल्का (easy and lightweight)

sudo apt-get install chkservice

sudo chkservice