কীভাবে তদারকি করবেন এবং স্বয়ংক্রিয়ভাবে কোনও প্রক্রিয়া পুনরায় চালু করবেন?


34

আমি একটি প্রক্রিয়া চাই যা ক্রাশ হলে এটি পুনরায় শুরু হবে। আমি কিছুটা গুগল করে দেখতে পেলাম যে ডেমোনটোলগুলি ব্যবহার করা একটি সহজ সমাধান ।

কীভাবে এটি কনফিগার করতে হয় তা আমি বুঝতে পারি নি।

  1. এই জাতীয় কার্যকারিতা সম্পাদনের সহজতম উপায় কী?
  2. কীভাবে এটি কনফিগার করবেন?

উত্তর:


29

এই উত্তরটি আপস্টার্ট (<= 14.10) সহ উবুন্টু সংস্করণগুলিতে প্রযোজ্য। সিস্টেমড (> = 15.04) সহ সংস্করণগুলির জন্য অন্য পদ্ধতির ব্যবহার করুন।

মনে হচ্ছে আপনি উবুন্টুতে আপস্টার্ট সহ ইতিমধ্যে সরবরাহ করা কোনও কার্যকারিতা সন্ধান করছেন । respawnকনফিগারেশনে স্তবক ঠিক আপনার যা প্রয়োজন হবে না। আমি এটির সাথে আচরণ করার একটি কম মানক পদ্ধতির ব্যবহারের বিরুদ্ধে সুপারিশ করব।

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

দুর্ভাগ্যক্রমে, এখনও ব্যবহারকারী জবস সঠিকভাবে চালানো সম্ভব নয় : ব্যবহারকারীর কাজ চালানোর জন্য আপস্টার্ট পাওয়া যায় না

উদাহরণ

আসুন ধরে নেওয়া যাক আমরা ক্যালকুলেটর অ্যাপটি চালিয়ে রাখতে চাই, এমনকি এটি আগুনের সাথে নিহত হওয়ার পরেও (সিগন্যাল 9)।

  1. এতে একটি কনফিগারেশন ফাইল তৈরি করুন /etc/init/calculator.conf( এই নিবন্ধের ভিত্তিতে ):

    #!upstart
    description "Calculator"
    
    # Start job via the daemon control script. Replace "gert" with your username.
    exec su -l gert -c 'export DISPLAY=:0; /usr/bin/gnome-calculator'
    
    # Restart the process if it dies with a signal
    # or exit code not given by the 'normal exit' stanza.
    respawn
    
    # Give up if restart occurs 10 times in 90 seconds.
    respawn limit 10 90
    
  2. এটি চালিয়ে শুরু করুন

    sudo start calculator
    
  3. এটি আপনার বর্তমান প্রদর্শন ( :0) এ খোলে এবং এটি বন্ধ করার পরে এটি পুনরায় আরম্ভ করে দেখে দুর্দান্ততা উপভোগ করে।

    • প্রক্রিয়া আইডি সনাক্ত করুন, উদাহরণস্বরূপ ps aux | grep calculator:

      gert  13695 0.2 0.4 349744 16460 ?   Sl   13:38   0:00 /usr/bin/gnome-calculator
      
    • এটা আগুনে মেরে ফেল.

      sudo kill -9 13695
      
    • এটি পুনরায় প্রদর্শিত দেখুন:

      gert  16059 4.6 0.4 349736 16448 ?   Sl   13:40   0:00 /usr/bin/gnome-calculator
      

মনে রাখবেন যে এটি যথাযথ ব্যবহারকারীর কাজের সমর্থন সহ উবুন্টু 13.04 এর পরিকল্পনাগুলির সাথে আরও মার্জিত হবে।


আমি যখন এটি শুরু করার চেষ্টা করি তখন আমি অজানা কাজ পাই? কোন ধারণা। আমি ফাইলটি / etc / init
opc0de

@ opc0de ফাইলটির নাম servicename.confশুরু করতে কমান্ডটি মেলে start servicename। আমার সন্দেহ হয় আপনি আলাদা নামটি বেছে নিয়েছেন।
gertvdijk

না, এটি মেলে তবে আমি আপনার উদাহরণ অনুসরণ করি নি বলে আমার মনে হয় আমার একটি সিনট্যাক্স ত্রুটি হতে পারে।
opc0de

@ opc0de ঠিক আছে, আপনি প্রশ্নে কী অর্জন করতে চাইছেন সে সম্পর্কে আরও ব্যাখ্যা দিয়ে শুরু করুন: কী ধরণের অ্যাপ্লিকেশন / প্রক্রিয়া এবং আপনি এটি কীভাবে পরিচালনা করেন, পাশাপাশি আপনার বর্তমান প্রচেষ্টা সম্পর্কেও বিশদ।
gertvdijk

আপনার উদাহরণের সাথে সমাধান করা আমার ভুলটি হ'ল আমি সম্ভবত নির্বাহী স্ট্যাটিউমে ভুল করেছি। আপনার সাহায্যের জন্য ধন্যবাদ!
opc0de

13

একটি অত্যন্ত সহজ সরঞ্জাম যা কনফিগারেশনের প্রয়োজন ছাড়াই একই প্রভাব অর্জন করতে পারে immortal: https://immortal.run/

এইভাবে কমান্ডটি কার্যকর করুন:

immortal <cmd>

এটি ব্যাকগ্রাউন্ডে চলবে এবং প্রস্থান করা থাকলে স্বয়ংক্রিয়ভাবে পুনরায় চালু হবে।

  • immortalctl: চলমান চাকরির স্থিতি দেখুন। এখানে একটি nameকলাম মুদ্রিত হবে, আপনি অন্যান্য নিয়ন্ত্রণ আদেশের সাথে কাজের উল্লেখ করতে এটি ব্যবহার করতে পারেন।
  • immortalctl stop <name>: প্রদত্ত নামের সাথে কাজ পর্যবেক্ষণ করা বন্ধ করে দেয় (এটি স্বয়ংক্রিয়ভাবে পুনরায় আরম্ভ হবে না, তবে বর্তমান প্রক্রিয়াটি চালিয়ে যেতে থাকবে)
  • immortalctl -k <name>: বর্তমান প্রক্রিয়াতে সিকিল পাঠায়।
  • immortalctl exit <name>: প্রদত্ত নামের সাথে কাজ পর্যবেক্ষণ করা বন্ধ করে দেয় এবং এটিকে কাজের তালিকা থেকে সরিয়ে দেয়।

1
ধন্যবাদ, এটি 16.04-এ আমার ব্যবহারের ক্ষেত্রে দুর্দান্ত কাজ করেছে। আমার দরকারী ব্যাগগুলিতে এটি রাখা।
কোয়ান্টিন স্কাউসন

2
প্রকৃতপক্ষে, এটি আপস্টার্ট / রেডনউনের চেয়ে বেশি হালকা দেখায়।
শ্রীধর সারনোবাত

এটি প্রদর্শনের stdoutএবং stderrঅগ্রভাগে পাওয়ার কোনও উপায় আছে কি ?
ডেভিড এস

আমি একজনের সম্পর্কে অবগত নই, যেহেতু এটি সাধারণত পটভূমিতে কোনও প্রক্রিয়া চালাতে ব্যবহৃত হয়। তবে, আপনি immortalctl -l out.log <cmd> && tail -f out.logএকই প্রভাব অর্জন করতে ব্যবহার করতে পারেন ।
এক্সট্রপিক ইঞ্জিন

@DavidS। আপনি যদি একটি মিলিত লগ পেতে বা stdout- এ এবং দ্বারা stderr থাকতে পারে immortal.run/post/stderr
nbari

1

আপনার যদি ডিমন / পরিষেবা / পটভূমি প্রক্রিয়া কার্যকারিতা প্রয়োজন হয় না এবং কেবল কনসোলে এটি করতে চান তবে একটি ফাইল তৈরি করুন autorestart.sh:

#!/bin/bash

while [ 1 ]; do
  some_command
done

এরপরে বাইরে চলে গেলে বা ক্রাশ হয়ে গেলে ./autorestart.shস্বয়ংক্রিয়ভাবে পুনরায় চালু হবে some_command। সিটিআরএল-সি লুপটি ভেঙে পরিষ্কার করে প্রোগ্রামটি ছেড়ে দেয়।

উবুন্টু 18.04 এ পরীক্ষিত।


0

"আপস্টার্ট" ছাড়াই একটি উপায় আছে। মূলশব্দটি "inittab" :-)। যদিও এটি কোনও ফাইল সাধারণত ডিফল্ট থেকে পরিবর্তিত হয় না, এটি এসওয়াইএসভি মেশিনে পছন্দসই শোধনা অর্জনে ব্যবহার করা যেতে পারে।


কেউ কেন এই সমাধানটিকে প্রত্যাখ্যান করেছে তা আমি বুঝতে পারি না। যদি আপনি এটি বুঝতে না পারেন, কেবল এটি গুগল করুন; এখানে আর্টটাব এর ম্যান পেজ কেটে পেস্ট করা অর্থহীন, আপনি সেগুলি নিজের সিস্টেমে নিজেই পড়তে পারেন! শুধু টাইপ করুন "ম্যান
দিতাব

13
"এটি ব্যবহার করুন, নিজেরাই এটি নির্ধারণ করুন" এর চেয়ে উচ্চ মানের উত্তরগুলির বিশদ বিস্তারিত: :)
শেঠ

0

পিএস-ওয়াচার এমন একটি সরঞ্জাম যা দেখায় যে কোন প্রক্রিয়াগুলি চলছে এবং সংজ্ঞায়িত পরিস্থিতিতে একটি ক্রিয়াকলাপ চালায়। আসুন এটি ইনস্টল করুন:

apt-get install ps-watcher

বিশদটির জন্য পিএইচপি-এফপিএম-এ ফ্যালব্যাক সহ চলমান এইচএইচভিএমের নীচে দেখুন - এটি আমার পক্ষে ভাল কাজ করেছে।


যেহেতু এটি খুব দীর্ঘ নয়, দয়া করে নিবন্ধের পরিবর্তে কোডের একটি সংক্ষিপ্তসার যুক্ত করুন কারণ কেবলমাত্র একটি খুব ছোট বিভাগই এই প্রশ্নের ক্ষেত্রে প্রযোজ্য।
derHugo

0

উবুন্টু ১৫.০৪ থেকে যেহেতু স্টার্টআপ এবং রিস্যাভিং প্রক্রিয়াগুলি "সিস্টেমড" দ্বারা পরিচালিত হয়, এখানে একটি ভাল পরিচিতি পাওয়া যাবে

https://www.digitalocean.com/community/tutorials/systemd-essentials-working-with-services-units-and-the-journal

আপনাকে শুরু করার একটি উদাহরণ পাওয়া যায়

https://www.devdungeon.com/content/creating-systemd-service-files

এই পদ্ধতিটি প্রবীণদের / etc / inittab এবং upstart এর ভিত্তিতে ছাড়িয়ে যায়।

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