পটভূমি
আমাকে systemd
একটি নতুন পরিষেবার জন্য একটি স্ক্রিপ্ট তৈরি করতে বলা হয়েছে foo_daemon
, যা কখনও কখনও "খারাপ অবস্থার" হয়ে যায় এবং এর মাধ্যমে মারা যাবে না SIGTERM
(সম্ভবত কাস্টম সিগন্যাল হ্যান্ডলারের কারণে)। এটি বিকাশকারীদের জন্য সমস্যাযুক্ত, কারণ তাদের মাধ্যমে পরিষেবাটি শুরু / বন্ধ / পুনরায় চালু করার নির্দেশ দেওয়া হয়েছে:
systemctl start foo_daemon.service
systemctl stop foo_daemon.service
systemctl restart foo_daemon.service
সমস্যা
কখনও কখনও foo_daemon
খারাপ অবস্থার মধ্যে পড়ার কারণে আমাদের এটিকে জোর করে হত্যা করতে হয়:
systemctl kill -s KILL foo_daemon.service
প্রশ্ন
আমি কীভাবে আমার systemd
স্ক্রিপ্টটি সেটআপ করতে পারি foo_daemon
, যখনই কোনও ব্যবহারকারী পরিষেবাটি বন্ধ / পুনঃসূচনা করার চেষ্টা করে, তা systemd
করবে:
- এর
foo_daemon
মাধ্যমে একটি দৃষ্টিনন্দন শাটডাউন চেষ্টা করুনSIGTERM
। foo_daemon
সম্পূর্ণ করার জন্য শাটডাউন / সমাপ্তির জন্য 2 সেকেন্ড পর্যন্ত সময় দিন ।- প্রক্রিয়াটি এখনও বেঁচে থাকলে তার
foo_daemon
মাধ্যমে জোর করে শাটডাউন করার চেষ্টা করুনSIGKILL
(সুতরাং আমাদের পিআইডি পুনর্ব্যবহারের ঝুঁকি নেই এবং ভুল পিআইডির বিরুদ্ধেsystemd
সমস্যা রয়েছেSIGKILL
)। আমরা যে ডিভাইসটি পরীক্ষা করছি তার ফলে অসংখ্য প্রক্রিয়া দ্রুত ছড়িয়ে পড়ে / কাঁটাচামচ হয়, তাই পিআইডি পুনর্ব্যবহারের একটি সমস্যা দেখা দেওয়ার বিষয়ে একটি বিরল তবে খুব বাস্তব উদ্বেগ রয়েছে। - যদি, বাস্তবে, আমি পিআইডি পুনর্ব্যবহারযোগ্য সম্পর্কে
SIGKILL
ব্যর্থ হচ্ছি, তবে আমি স্ক্রিপ্টটি ঠিক করছি প্রক্রিয়াটির বিরুদ্ধে 'পিআইডি পুনর্ব্যবহারযোগ্য পিআইডি হত্যার বিষয়ে উদ্বিগ্ন না হয়ে iss