मैं उपयोग करने वाले ग्राहकों के लिए एक ही वेब ऐप के कई उदाहरणों की मेजबानी करने की योजना बना रहा हूं systemd
। मैं उपयोग करने में सक्षम होना चाहता हूं stop
और start
प्रत्येक ग्राहक उदाहरण का उपयोग कर सकता हूं systemd
, साथ ही ग्राहक सेवा के पूरे संग्रह को एक ही सेवा के रूप में माना जा सकता है जिसे एक साथ रोका और शुरू किया जा सकता है।
systemd
मुझे बिल्डिंग ब्लॉक्स प्रदान करने की आवश्यकता है PartOf
, और टेम्पलेट यूनिट फ़ाइलों का उपयोग करने के लिए, लेकिन मैं माता-पिता की सेवा बंद कर देता हूं, बाल ग्राहक सेवा बंद नहीं होती है। मैं इस काम को systemd के साथ कैसे कर सकता हूं? यहाँ मेरे पास अभी तक क्या है।
मूल इकाई फ़ाइल app.service
:
[Unit]
Description=App Web Service
[Service]
# Don't run as a deamon (because we've got nothing to do directly)
Type=oneshot
# Just print something, because ExecStart is required
ExecStart=/bin/echo "App Service exists only to collectively start and stop App instances"
# Keep running after Exit start finished, because we want the instances that depend on this to keep running
RemainAfterExit=yes
StandardOutput=journal
नाम की एक यूनिट टेम्प्लेट फ़ाइल app@.service
, जिसका उपयोग ग्राहक उदाहरण बनाने के लिए किया जाता है:
[Unit]
Description=%I Instance of App Web Service
[Service]
PartOf=app.service
ExecStart=/home/mark/bin/app-poc.sh %i
StandardOutput=journal
मेरी app-poc.sh
स्क्रिप्ट (अवधारणा का प्रमाण जो लूप में फ़ाइल को लॉग करने के लिए प्रिंट करता है):
#!/bin/bash
# Just a temporary code to fake a full daemon.
while :
do
echo "The App PoC loop for $@"
sleep 2;
done
अवधारणा के प्रमाण के लिए, मुझे सिस्टम यूनिट फ़ाइलें मिली हैं ~/.config/systemd/user
।
मैं तब टेम्पलेट के आधार पर अभिभावक और एक उदाहरण शुरू करता हूं systemctl --user daemon-reload
:
systemctl --user start app
systemctl --user start app@customer.service
उपयोग करने से journalctl -f
मैं देख सकता हूं कि दोनों शुरू हो गए हैं और ग्राहक का चलना जारी है। अब II से उम्मीद है कि माता-पिता बच्चे को बंद कर देंगे (क्योंकि मैंने इस्तेमाल किया था PartOf
), लेकिन ऐसा नहीं है। इसके अलावा, माता-पिता को शुरू करना बच्चे को उम्मीद के मुताबिक शुरू नहीं कर रहा है।
systemctl --user stop app
धन्यवाद!
(मैं Ubuntu 9.04 का उपयोग कर रहा हूँ systemd 229 के साथ)।
Requires=
इसके बजाय उपयोग करने की आवश्यकता नहीं है ?