কিভাবে systemctl বলুন যে সেবা ইতিমধ্যে শুরু হয়েছে


0

আমি একটি সেবা ইউনিট ফাইল আছে mediation.service এটার মত:

[Unit]
Description=Mobile-IP Log dumper

[Service]
Type=forking
ExecStart=/opt/mediation/mediation start
ExecStopPost=/opt/mediation/mediation stop
ExecReload=/opt/mediation/mediation reload
PIDFile=/var/lib/mediation/syslog-ng.pid

এখন, কেউ সরাসরি সঙ্গে সেবা শুরু অনুমান /opt/mediation/mediation start ব্যবহার করার পরিবর্তে systemctl start mediation

এক্ষেত্রে systemctl status mediation প্রদর্শন করা হবে:

● mediation.service - Mobile-IP Log dumper
   Loaded: loaded (/etc/systemd/system/mediation.service; enabled; vendor preset: disabled)
   Active: inactive (dead) since Mon 2016-07-11 11:24:11 CEST; 8s ago
  Process: 14088 ExecStopPost=/opt/mediation/mediation stop (code=exited, status=0/SUCCESS)
  Process: 13482 ExecStart=/opt/mediation/mediation start (code=exited, status=0/SUCCESS)
 Main PID: 13746

এটা কি সম্ভব systemctl status mediation সেবা সঠিক অবস্থা (যেমন চলমান) দেখায়? দেখে মনে হচ্ছে systemctl PIDFile পুনরায় লোড হয় না যখন এটি স্থিতি পরীক্ষা করে, কারণ এই ক্ষেত্রে সমস্ত তথ্য উপলব্ধ হবে এবং সঠিক অবস্থা জানা যাবে।


মোবাইল-আইপি? যে এখনও এই মুহূর্তে কাজ করে, এবং কিভাবে আমি এটা কাজ করতে পারেন
grawity

Mobile-IP শুধু আবেদন আমাদের অভ্যন্তরীণ নাম। এটি মোবাইল-আইপি প্রোটোকল সম্পর্কিত নয় - সম্ভবত এটির নামটি খুব স্মার্ট নয় তবে এখন এটি পরিবর্তন করার জন্য খুব দেরি হয়ে গেছে।
Wernfried Domscheit

উত্তর:


2

না, আপনি এটা করতে পারবেন না।

systemd এর পরিষেবা ট্র্যাকিং প্রধানত cgroups উপর ভিত্তি করে, তাই প্রক্রিয়া না পারেন অংশ হিসাবে বিবেচনা করা হবে mediation.service এটি অনুপযুক্ত cgroup মধ্যে না হওয়া পর্যন্ত। (উদাঃ sshd.service থেকে ব্যবহারকারীর লগইনগুলি কীভাবে ভাঙ্গা যায়: অন্য সিগ্রুপে যাওয়ার মাধ্যমে।) এটি পিআইআইডি ফাইলগুলির সম্পর্কে বেশি যত্ন করে না, যদিও এটি অতিরিক্ত যাচাইয়ের জন্য তাদের ব্যবহার করে।

কিন্তু যদি প্রক্রিয়াটি সঠিক সিগ্রুপে (সি / সিএস / fs / cgroup / systemd) মাধ্যমে সরাতে হয় তবে সম্পূর্ণ পরিষেবাটি এখনও শুরু না হওয়া পর্যন্ত এটি 'সক্রিয়' বিবেচিত হবে না। মাধ্যমে systemd হল।


ডেবিয়ান এবং অন্যান্য ডিস্ট্রিবিউশনে যা এখনও একটি মিশ্রণ আছে /etc/init.d স্ক্রিপ্টগুলি, এটি ম্যানুয়ালভাবে চালানো হলে স্বয়ংক্রিয়ভাবে systemctl এর মাধ্যমে ইনসक्रिप्टকে পুনরায় চালানোর জন্য সাধারণ "LSB ফাংশন" স্ক্রিপ্টলেট সম্পাদনা করে সমাধান করা হয়।

কিন্তু daemons শুরু করার জন্য সরাসরি ... ভাল, আমি অনুমান করি না? অথবা, একটি অনুরূপ wrapper স্ক্রিপ্ট যা systemctl ম্যানুয়াল স্টার্টআপগুলি পুনঃনির্দেশিত করে।


0

যেহেতু কোনও সরাসরি সমাধান নেই তাই স্ক্রিপ্টে এমন লাইন যোগ করার জন্য একটি কার্যকারিতা কিছু হতে পারে।

if [[ ! `ps --no-headers -o args -p $PPID | grep systemd` ]] ; then 
   echo "You must start the application with 'systemctl start mediation'"
   exit 1
fi

এটি systemctl বাইরে সেবা শুরু হয় যে বাধা দেয়।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.