সিস্টেমড হ্যাং প্রক্রিয়াগুলি সনাক্ত এবং হত্যা করতে পারে?


16

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

বর্তমানে আপাতত এই সমস্যা থেকে বাঁচার জন্য, আমি জার্নালেক্টল আউটপুটটি দেখার পরিকল্পনা করছি এবং যদি এটি একটি নির্দিষ্ট সময়ের জন্য পরিবর্তন না হয় তবে আমি শেল স্ক্রিপ্টের মাধ্যমে প্রক্রিয়াটি মেরে ফেলব।

সিস্টেমড বা অন্যথায় প্রক্রিয়াগুলি নিরীক্ষণের জন্য আরও ভাল উপায় আছে কিনা তা অবাক করেই ভাবছি।


সম্ভবত না. প্রক্রিয়াটি স্তব্ধ হয়ে গেলে আপনি কীভাবে বলবেন? আপনার যদি সত্যিই এমন কিছু প্রয়োজন হয় for(;;) do_something();?
এমভিপি

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

উত্তর:


25

হ্যাঁ; তবে প্রথমে আপনার বাগি প্রোগ্রামটি সিস্টেমেডে ফিড করার আগে ঠিক করুন।

মারিয়াসমাতুটিয়া বেশ সঠিক। আপনার প্রোগ্রামে আপনার সমস্যা আছে। এটা অচল। সিস্টেমডের সাথে ফিডিং উত্তর নয়। সর্বোপরি, এটি একটি বিভ্রান্তি। আপনার প্রোগ্রামটি ঠিক করুন যাতে এটি ভেঙে না যায়। আপনার শক্তিগুলি সঠিক জিনিসটিতে পরিচালনা করুন।

এটি বলেছিল, অন্যান্য ব্যক্তিরা প্রশ্নটি সঠিক হওয়ার চেয়ে প্রশ্ন শিরোনামের কারণে এখানে আসতে চলেছেন। তাদের সুবিধার জন্য, প্রশ্নটি যথাযথ উপেক্ষা করে শিরোনামের উত্তর এখানে দেওয়া হয়েছে:

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

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

সিস্টেমডের ওয়াচডগ সক্ষমতার ব্যবহার করতে এই প্রোটোকলটি বলে এমন একটি ডমন…

  • … অবশ্যই WATCHDOG_USECপরিবেশের পরিবর্তনশীল জন্য পরীক্ষা করা উচিত ;
  • ... অবশ্যই / / 2 ("ইউএসইসি" মাইক্রোসেকেন্ডস বোঝায়) এর ব্যবধানে, অপশন সেট সহ, সারা জীবন এবং তার আজীবন জুড়ে অবিচ্ছিন্নভাবে এবং ঘন ঘন sd_notify () কল করতে হবে ;WATCHDOG=1WATCHDOG_USEC
  • ... অবশ্যই Type=notifyএর ইউনিট ফাইল সেট করা উচিত ;
  • … এর ইউনিট ফাইলে NotifyAccess=main(বা =all) সেট থাকা উচিত ;
  • … এর ইউনিট ফাইলে অবশ্যই WatchdogSec=সেকেন্ড সেট থাকতে হবে।
  • ... সাথে লিঙ্ক করা আবশ্যক libsystemd-daemon.so

আপনি যদি কোডিংয়ের বিশদটি জানতে চান তবে ম্যানুয়ালটি পড়ার পরে নিশ্চিত হয়ে নিন যে আপনি ডান স্ট্যাকএক্সচেঞ্জে গিয়েছেন। এটি সুপার ইউজার। স্ট্যাকওভারফ্লো সেখানে শেষ

আরও পড়া


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