পটভূমি
আমাকে systemdএকটি নতুন পরিষেবার জন্য একটি স্ক্রিপ্ট তৈরি করতে বলা হয়েছে foo_daemon, যা কখনও কখনও "খারাপ অবস্থার" হয়ে যায় এবং এর মাধ্যমে মারা যাবে না SIGTERM(সম্ভবত কাস্টম সিগন্যাল হ্যান্ডলারের কারণে)। এটি বিকাশকারীদের জন্য সমস্যাযুক্ত, কারণ তাদের মাধ্যমে পরিষেবাটি শুরু / বন্ধ / পুনরায় চালু করার নির্দেশ দেওয়া হয়েছে:
systemctl start foo_daemon.servicesystemctl stop foo_daemon.servicesystemctl 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