আপস্টার্ট এবং মাল্টি সিগন্যাল শাটডাউন প্রক্রিয়া


1

আমি উবুন্টুতে একজন রেসি ওয়ার্কার সার্ভিস চালাচ্ছি, এবং আমি এটি আপস্টার্ট (উবুন্টুর জন্য ডিফল্ট প্রক্রিয়া পরিচালক) ব্যবহার করে পরিচালনা করতে চাই।

একজন রিকিউই কর্মী জন্য উপযুক্ত শাটডাউন ক্রম হ'ল QUITপ্রথমে সংকেত প্রেরণ করা , এবং কোনও চলমান কাজ প্রথমে শেষ করার প্রক্রিয়াটির জন্য অপেক্ষা করুন। এটি তখন নিজেই থামানো উচিত। যদি কর্মীরা সময়োচিত পদ্ধতিতে শাটডাউন না করে - কারণ কাজটি এখনও চলছে (সম্ভবত আটকে রয়েছে), আমাকে একটি TERMসংকেত পাঠাতে হবে যা শ্রমিক প্রক্রিয়াটি চাকরি বাতিল করতে এবং প্রস্থান করতে বাধ্য করবে। এবং স্পষ্টতই, যদি এটি কাজ না করে তবে একটি KILLসংকেত পাঠাতে হবে।

আমি এটি প্রয়োগ pre-start scriptকরার জন্য QUITযে পদ্ধতিটি ভেবেছিলাম তা হ'ল সিগন্যাল প্রেরণ করা এবং তারপরে প্রক্রিয়াটি উপস্থিত না হওয়া বা সময়সীমা শেষ হওয়ার আগ পর্যন্ত ঘুমানো।

তবে বাস্তবে যা ঘটে তা হ'ল যদি শ্রমিক প্রতিক্রিয়া জানায় QUITএবং প্রস্থান করে, respawnলাথি মেরে প্রক্রিয়াটি পুনরায় চালু করে যা স্পষ্টতই থামার প্রক্রিয়াটিকে না ঘটায়।

আমরা যদি যাইহোক প্রক্রিয়াটি বন্ধ করে দিই তবে রেসপন না পাওয়ার জন্য উপাসনা পাওয়ার কী উপায় আছে?

উত্তর:


2

সমস্যাটি মোকাবেলার জন্য দুটি উপায় রয়েছে যা আমি উভয়ই নিখুঁত:

  1. উপস্টার্টের kill signalস্তবক রয়েছে। আপনি সেট করেন তাহলে kill signal QUITএবং kill timeout 600, ভুঁইফোড় পাঠাব SIGQUITপ্রক্রিয়া, তারপর পাঠানোর আগে 600 সেকেন্ড অপেক্ষা SIGKILL। প্রক্রিয়াটি SIGKILLপ্রেরণের আগে যদি শেষ হয়ে যায় তবে আমরা ভাল। এই পদ্ধতির সাথে সমস্যাগুলি রয়েছে: (ক) এটি পাঠিয়েছে SIGKILLএবং SIGTERMসময়সীমা পেরোনোর ​​পরে নয় যা রিকি শ্রমিককে সুন্দরভাবে বন্ধ করতে দেয় না, তবে এটি কোনও বড় বিষয় নয়। (খ) একটি খারাপ সমস্যা যা আমি পেয়েছি তা হ'ল আপস্টার্টটি "কিল সিগন্যাল" (আমাদের ক্ষেত্রে SIGQUIT) পাঠায় অধিবেশনটির সমস্ত প্রক্রিয়াগুলিতে, যা সম্ভবত রেসকিউ কর্মীর শিশু প্রক্রিয়াগুলির ক্রিয়াকলাপে হস্তক্ষেপ করবে ( SIGQUITডিফল্ট ক্রিয়াটি সমাপ্ত করা হয়) একটি কোর ডাম্প সহ)।
  2. আপনার নিজের মোড়কটি কার্যকর করুন যা আপনার কনফিগার করা আপস্টার্ট প্রেরণ (বা কেবলমাত্র ডিফল্ট অনুমান SIGTERM) প্রেরণ করে এবং সমস্ত কৌতূহলী শাটডাউন নিজেই পরিচালনা করে। সেক্ষেত্রে kill timeoutআপনার মোড়কটিকে চমত্কার শাটডাউন করতে দেওয়ার জন্য পর্যাপ্ত সময়ের জন্য আপস্টার্ট সেট করা গুরুত্বপূর্ণ এবং হয় সময়ের সাথে অ্যাওর্টটি চাপিয়ে দিতে বাধ্য করা (যার ক্ষেত্রে আপস্টার্টের তুলনায় সময়সীমাটি কিছুটা কম রয়েছে তা নিশ্চিত করুন) বা কেবল নির্ভর করুন ক্লিনআপের SIGKILLজন্য আপস্টার্টগুলি (যা আপনার প্রয়োজনীয়তার উপর নির্ভর করে একটি ভাল ধারণা হতে পারে এবং নাও হতে পারে)। কনস: এটি অধিকার পেতে এটি বরং জটিল, এবং আপস্টার্ট থাকার কারণটি তাই আপনাকে প্রতিটি পরিষেবার জন্য নিজেকে একটি প্রক্রিয়া পরিচালক লিখতে হবে না।

আপনি যদি কোনওভাবেই যেতে না চান তবে সেখানে অন্যান্য প্রক্রিয়া পরিচালক রয়েছে যা আপস্টার্ট সমর্থনের চেয়ে আরও জটিল সিগন্যাল ব্যবস্থা বাস্তবায়িত করতে পারে এবং কেবলমাত্র যে প্রক্রিয়াটিতে আপনার সমস্যা রয়েছে সেগুলি পরিচালনা করার জন্য এগুলি সাধারণত আপস্টার্টের অধীনে কার্যকর করা সহজ are । দুর্ভাগ্যক্রমে, এটি পাওয়া শক্ত যে সমস্ত ক্ষেত্রে সঠিকভাবে কাজ করে। উদাহরণস্বরূপ, আমি ব্লুপিল চেষ্টা করেছি , যা কাগজে দুর্দান্ত দেখায় তবে লেখার সময় একটি চমকপ্রদ বাগ রয়েছে যেখানে আপনি যদি একাধিক সংকেত এবং একাধিক সময়সীমার সাথে একটি জটিল সিগন্যাল ব্যবস্থা চেষ্টা করেন তবে এটি কেবল একবারে সমস্ত সংকেত প্রেরণ করে (অগত্যা নয়) সঠিক ক্রম) এবং শিশু প্রক্রিয়া ক্রাশ করে।

যদি অন্য কারও কাছে যোগ করার জন্য আরও তথ্য থাকে তবে আরও উত্তর যুক্ত করতে নির্দ্বিধায় থাকুন এবং আমি যদি এটির ভাল হয় তবে আমি এটি "উত্তর" হিসাবে চিহ্নিত করতে পারি (আমার স্ব-উত্তরের পরিবর্তে)।


0

আপস্টার্ট কুকবুক থেকে :

যেহেতু কোনও পূর্ব-স্টপ চালানো হবে তখনই কাজের লক্ষ্য ইতিমধ্যে 'স্টপ' হয়ে যাবে, আপনি যে কোনও উপায়ে প্রক্রিয়াটি বন্ধ করতে পারেন, এবং প্রক্রিয়াটি পুনরায় তৈরি করা যাবে না (এমনকি শ্বাসনীর স্তরের সাথেও)।

আপনি পাঠানোর চেষ্টা করে দেখতে পারেন QUITমধ্যে pre-stopআপনার স্ক্রিপ্টটি অধ্যায়।

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