ऐप को & या nohup से चलाना ठीक है — जब तक सर्वर रीबूट न हो, प्रक्रिया क्रैश न हो, या आप उसके लॉग न ढूँढना चाहें — तब यह बिखर जाता है। systemd मानक उत्तर है: यह आपके ऐप को बूट पर शुरू करता है, मरने पर पुनः आरंभ करता है, और उसके लॉग कैप्चर करता है। किसी स्क्रिप्ट या बाइनरी को प्रबंधित सेवा में बदलना एक छोटी फ़ाइल भर है।
1. एक यूनिट फ़ाइल लिखें
/etc/systemd/system/myapp.service बनाएँ:
[Unit]
Description=My application
After=network.target
[Service]
User=myapp
WorkingDirectory=/opt/myapp
ExecStart=/usr/bin/python3 /opt/myapp/run.py
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
ExecStart, WorkingDirectory और User को अपने ऐप के अनुसार समायोजित करें। Restart=always ही वह चीज़ है जो इसे जीवित रखती है।
2. एक समर्पित उपयोगकर्ता बनाएँ (अनुशंसित)
sudo useradd --system --no-create-home --shell /usr/sbin/nologin myapp
sudo chown -R myapp:myapp /opt/myapp
गैर-root उपयोगकर्ता के रूप में चलाना, यदि ऐप कभी समझौता हो जाए तो क्षति को सीमित करता है।
3. इसे सक्षम करें और शुरू करें
sudo systemctl daemon-reload
sudo systemctl enable --now myapp
enable इसे बूट पर शुरू कराता है; --now इसे तुरंत शुरू करता है।
4. स्थिति और लॉग जाँचें
sudo systemctl status myapp
journalctl -u myapp -f # सजीव लॉग का अनुसरण करें
रोज़मर्रा के आदेश
sudo systemctl restart myapp # बदलाव के बाद पुनः आरंभ करें
sudo systemctl stop myapp # इसे रोकें
sudo systemctl disable myapp # बूट पर शुरू होना बंद करें
ईमानदार चेतावनियाँ
- यूनिट फ़ाइल संपादित करने के बाद
daemon-reloadचलाएँ, वरना systemd पुराना संस्करण उपयोग करता है। - क्रैश लूप से सावधान रहें। यदि ऐप तुरंत विफल होता है, तो
Restart=alwaysहमेशा के लिए पुनः प्रयास करता है —RestartSec=5प्रयासों में अंतर देता है; लॉग के ज़रिए मूल त्रुटि ठीक करें। - गैर-root
User=को प्राथमिकता दें ताकि समझौता किया गया ऐप पूरे सर्वर का मालिक न बने।
अगले कदम
systemd सेवा वही है जिससे आप किसी भी चीज़ को 24/7 चलता रखते हैं — उदाहरण के लिए चौबीसों घंटे चलने वाला एक AI एजेंट या सेल्फ़-होस्टेड RustDesk सर्वर के पीछे का रिले। यदि आपका ऐप इसके बजाय कंटेनरीकृत है, तो Docker का --restart unless-stopped वही भूमिका निभाता है — देखें Docker कैसे इंस्टॉल करें।
टिप्पणियाँ
अभी तक कोई टिप्पणी नहीं। पहले बनें।