पर्यवेक्षण और स्वचालित रूप से प्रक्रिया को पुनरारंभ करने के लिए कैसे?


34

मैं एक प्रक्रिया करना चाहता हूं जो क्रैश होने पर फिर से चालू हो जाएगी। मैंने थोड़ा गुगली की और पाया कि एक आसान उपाय है डेमोनटोल्स का उपयोग करना

मुझे समझ नहीं आया कि इसे कैसे कॉन्फ़िगर किया जाए।

  1. इस तरह की कार्यक्षमता को पूरा करने का सबसे आसान तरीका क्या है?
  2. इसे कैसे कॉन्फ़िगर करें?

जवाबों:


29

यह उत्तर उपस्टार्ट (<= 14.10) के साथ उबंटू संस्करणों पर लागू होता है। Systemd (> = 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>: SIGKILL को वर्तमान प्रक्रिया में भेजता है।
  • 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अगर यह बाहर निकालता है या दुर्घटनाओं। CTRL-C लूप को तोड़ता है और प्रोग्राम को सफाई से क्विट करता है।

उबुन्टु 18.04 पर परीक्षण किया गया।


0

"अपस्टार्ट" के बिना एक रास्ता है। कीवर्ड "inittab" :-) है। हालाँकि यह एक फ़ाइल है जो आमतौर पर डिफ़ॉल्ट रूप से परिवर्तित नहीं होती है, इसका उपयोग SYSV मशीनों पर वांछित रिस्पांसिंग को प्राप्त करने के लिए किया जा सकता है।


मुझे समझ नहीं आ रहा है कि किसी ने इस समाधान को क्यों दोहराया। यदि आप इसे नहीं समझते हैं, तो बस इसे Google करें; इनायतब के आदमी पृष्ठों को यहाँ काटना और चिपकाना व्यर्थ है, आप उन्हें अपने सिस्टम पर स्वयं पढ़ सकते हैं! बस टाइप करें "मैन
इनटैब

13
उच्च गुणवत्ता वाले उत्तर "इसका उपयोग करें, इसे अपने दम
सेठ

0

ps- द्रष्टा एक उपकरण है जो देखता है कि कौन सी प्रक्रियाएं चल रही हैं और परिभाषित परिस्थितियों पर एक कार्रवाई को निष्पादित करती हैं। आइए इसे स्थापित करें:

apt-get install ps-watcher

विवरण के लिए PHP-FPM में गिरावट के साथ HHVM रनिंग के निचले भाग को देखें - यह मेरे लिए अच्छी तरह से काम किया है।


चूंकि यह बहुत लंबा नहीं है, कृपया लेख के बजाय कोड का एक सारांश जोड़ें क्योंकि इस प्रश्न पर केवल एक बहुत ही छोटा अनुभाग लागू होता है।
derHugo

0

उबंटू 15.04 से "सिस्टमड" द्वारा स्टार्टअप और श्वसन प्रक्रिया का प्रबंधन किया जाता है, एक अच्छा परिचय यहां पाया जा सकता है

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 के आधार पर अधिगृहीत करता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.