मुनीर ने जो उल्लेख किया है वह ठीक यही है कि आप यह कैसे करते हैं। मूल रूप से आप एक service
फ़ाइल बनाते हैं , और इसे 30 बार शुरू करते हैं। अब यह थोड़ा अस्वाभाविक लग सकता है, लेकिन इसके फायदे हैं, जैसे उनमें से एक को बंद करना अगर यह गलत व्यवहार कर रहा है, और उन सभी को बंद नहीं करना है। कुछ चीजें भी हैं जो आप प्रबंधन को आसान बनाने के लिए कर सकते हैं।
सबसे पहले, इकाई फ़ाइल। एक फ़ाइल बनाएँ, जैसे /etc/systemd/system/test@.service
। महत्वपूर्ण बिट @
प्रतीक है।
यह सामग्री की तरह लग सकता है:
[Service]
ExecStart=/bin/sleep 600 %I
[Install]
WantedBy=multi-user.target
फिर systemctl start test@1.service
, इसके साथ शुरू करें systemctl start test@2.service
।
लॉन्च होने वाली प्रक्रियाएँ इस तरह दिखाई देंगी:
root 17222 19 0 0.0 0.0 Ss 00:05 /bin/sleep 600 1
root 17233 19 0 0.0 0.0 Ss 00:02 /bin/sleep 600 2
ध्यान दें कि आपके द्वारा शुरू किए %I
जाने के बाद आपने जो कुछ भी रखा था, उसके साथ प्रतिस्थापित हो गया @
।
आप सभी 30 को थोड़ा शेल-फू के साथ शुरू कर सकते हैं:
systemctl start test@{1..30}.service
आप किसी भी सामान्य सेवा की तरह बूट पर उन्हें सक्षम कर सकते हैं: systemctl enable test@1.service
।
अब, मुझे उन बातों से मतलब था जो आप प्रबंधन को आसान बनाने के लिए कर सकते हैं: शायद आप test@{1..30}.service
उन सभी को प्रबंधित करने के लिए उपयोग नहीं करना चाहते हैं । यह थोड़ा अलौकिक है। आप इसके बजाय अपनी सेवा के लिए एक नया लक्ष्य बना सकते हैं।
इसके /etc/systemd/system/test.target
साथ बनाएँ :
[Install]
WantedBy=multi-user.target
फिर समायोजित करें /etc/systemd/system/test@.service
ताकि ऐसा लगे:
[Unit]
StopWhenUnneeded=true
[Service]
ExecStart=/bin/sleep 600 %I
[Install]
WantedBy=test.target
के साथ पुनः लोड सिस्टमड systemctl daemon-reload
(केवल यदि आप इकाई फ़ाइल को संशोधित कर रहे हैं, तो आवश्यक है और इसके पुराने संस्करण को छोड़ें नहीं)। और अब उन सभी सेवाओं को सक्षम करें जिन्हें आप करना चाहते हैं systemctl enable test@{1..30}.service
।
(यदि आपके पास पहले यह सेवा सक्षम थी WantedBy=multi-user.target
, तो निर्भरता समाप्त करने के लिए इसे पहले अक्षम करें)
अब आप क्या कर सकते हैं systemctl start test.target
और systemctl stop test.target
है, और यह शुरू कर देंगे / सभी 30 प्रक्रियाओं बंद करो।
और फिर, आप किसी अन्य इकाई फ़ाइल की तरह बूट में सक्षम कर सकते हैं systemctl enable test.target
:।