Linux में कोई भी Executable एक सर्विस (Service) के रूप में चलाना
कोई भी ऐक्सेय़क्युअलेबल (executable) को Linux सर्विस (service) के रूप में चलाना
यहाँ एक सेट के निर्देश हैं, कैसे कोई भी ऐक्सुअल (Executable) Linux में सर्विस (Service) के रूप में चलाना Systemd के साथ।
ऊपर एक 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