আমি গ্রাহকদের জন্য একই ওয়েব অ্যাপ্লিকেশনটির কয়েকটি উদাহরণ হোস্ট করার পরিকল্পনা করছি systemd
। আমি সক্ষম হতে চাই stop
এবং start
প্রতিটি গ্রাহক উদাহরণ ব্যবহারের systemd
পাশাপাশি গ্রাহক দৃষ্টান্তের পুরো সংগ্রহকে একক পরিষেবা হিসাবে চিকিত্সা করি যা বন্ধ এবং একসাথে শুরু করা যেতে পারে।
systemd
আমার যে বিল্ডিং ব্লকগুলি ব্যবহার করার প্রয়োজন তা PartOf
এবং টেমপ্লেট ইউনিট ফাইলগুলি সরবরাহ করে বলে মনে হচ্ছে তবে আমি পিতামাতার পরিষেবাটি বন্ধ করে দিয়েছি, শিশু গ্রাহক পরিষেবা বন্ধ হচ্ছে না। সিস্টেমড দিয়ে আমি কীভাবে এই কাজটি করতে পারি? আমার এখন পর্যন্ত যা আছে তা এখানে।
প্যারেন্ট ইউনিট ফাইল 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
ধন্যবাদ!
(আমি সিস্টেমড 229 সহ উবুন্টু 16.04 ব্যবহার করছি)।
Requires=
পরিবর্তে কী ব্যবহারের দরকার নেই ?