यह समाप्त होने के बाद मैं स्वचालित रूप से किसी प्रक्रिया को कैसे पुनः आरंभ कर सकता हूं?


11

मुझे एक गोलंग कार्यक्रम मिला है जिसे मैं डेबियन स्क्वीज़ बॉक्स पर समाप्त करने के बाद पुनः आरंभ करना चाहता हूं। बात एक अपाचे 2 mod_proxy सेटअप के पीछे HTTP की सेवा कर रही है। मुझे इस प्रक्रिया के विफल होने की उम्मीद नहीं है, लेकिन मैं इसके खिलाफ कुछ बीमा करवाना चाहता हूं।

उबंटू पर मैंने इस प्रक्रिया को जीवित रखने के लिए अपस्टार्ट का उपयोग किया होगा। डेबियन अपस्टार्ट को पसंद नहीं करता है जो मुझे समझ में आता है क्योंकि यह एक इनिट प्रतिस्थापन है।

क्या कोई ऐसा विकल्प है जो निचोड़ने के बाद एक या एक से अधिक प्रक्रियाओं को फिर से शुरू करता है और इनिट के साथ अच्छा खेलता है?


क्या आप कृपया अपना प्रश्न पुनः दर्ज करेंगे? क्या यह है कि आप एक प्रक्रिया को समाप्त करने के बाद फिर से शुरू करना चाहते हैं?
मेल

यदि यह दोष या स्वयं समाप्त हो जाता है तो मैं स्वचालित रूप से एक प्रक्रिया को पुनः आरंभ करना चाहूंगा।
नष्ट कर दिया

2
पारंपरिक इनिट कार्यक्रम ठीक यही करता है। क्यों लोगों ने सोचा कि शेल स्क्रिप्ट को चलाने वाली शेल स्क्रिप्ट को चलाने के लिए init का उपयोग करना एक अच्छा विचार होगा जो एक अन्य प्रक्रिया शुरू करता है जो एक ही काम करता है, लेकिन एक स्वचालित कर्नेल आतंक और रिबूट के बिना उस प्रक्रिया को कभी भी विफल होना चाहिए, पूरी तरह से मुझसे परे है।
साइमन रिक्टर

यह एक उचित बिंदु है। मैं सिर्फ init का उपयोग करके जांच करूंगा। मैं dpkg का उपयोग करके सॉफ्टवेयर की पैकेजिंग कर रहा हूँ, ताकि init स्क्रिप्ट्स बनाना मुश्किल न हो।
नष्ट कर दिया

जवाबों:


10

इसके लिए जाने का सबसे अच्छा तरीका है daemontools। वे आपको प्रक्रियाओं की निगरानी और प्रतिक्रिया करने की अनुमति देते हैं।

उनकी वेबसाइट पर प्रलेखन देखें: http://cr.yp.to/daemontools.html


1
धन्यवाद - यही तो मैं उसके बाद कर रहा हूँ। डीजेबी = एक नियम के रूप में अच्छा है। मुझे वास्तव में यह याद रखना चाहिए कि 5 साल बिताने के बाद क्यूमेल की तलाश में क्या था!
हटा दिया गया

मेरे साथ भी, सिवाय इसके कि मैं काफी समय तक djbdns की देखभाल करता था।
mr.b

10

पर्यवेक्षण एक हल्का, कुशल विकल्प है। डेबियन के तहत इसे डेमोंटोलस में पैक किया जाता है । आप इस संबंधित प्रश्न को भी पढ़ सकते हैं , जो कुछ पर्यवेक्षण आलोचनाओं को सूचीबद्ध करता है, और दूसरी संभावना के रूप में पुनरारंभ का उल्लेख करता है।

अंत में, यदि आप सेटअप के लिए कुछ अविश्वसनीय रूप से आसान चाहते हैं, तो मुझे मॉनेट के साथ बड़ी सफलता मिली है । इसे डेबियन में भी पैक किया गया है


2
डेमोनटूलस कमाल का है; monit एक भयावह दुःस्वप्न है "नर्क आप शुरू क्यों नहीं करेंगे?" हताशा।
Womble

2

किसी एक प्रक्रिया को जीवित रखने के लिए पर्यवेक्षण या मौन अच्छा है। चूंकि आप "एक या अधिक" प्रक्रियाओं को जीवित रखने के लिए कहते हैं, मैं पर्यवेक्षक को प्लग करना चाहूंगा । किसी एक प्रक्रिया के प्रबंधन के लिए यह निश्चित रूप से ओवरकिल है, लेकिन यदि आपको कई प्रक्रियाओं का ट्रैक रखने की आवश्यकता है तो यह आपकी बात हो सकती है।


2

एक विकल्प यह है कि /etc/inittabअपनी स्क्रिप्ट को अंदर रखने के बजाय उपयोग करें /etc/init.d/

आप बस निम्नलिखित प्रारूप में एक प्रविष्टि जोड़ें:

<jobname>:<runlevels>:respawn:<command>

दुर्भाग्य से इसका मतलब है कि आप init कमांड को सामान्य स्टार्ट / स्टॉप / रीस्टार्ट का उपयोग नहीं कर सकते हैं, लेकिन यह सुनिश्चित करना चाहिए कि आपकी स्क्रिप्ट हर समय चल रही हो।


2

क्रोन और एक सरल स्क्रिप्ट के साथ प्रक्रिया को फिर से शुरू करने का क्रॉस वितरण तरीका है। आप यहां एक राइटअप देख सकते हैं कि लिनक्स में कैसे काम करना है

स्क्रिप्ट कुछ इस तरह दिखती है

#!/bin/bash 
# make-run.sh 
# make sure a process is always running.  
# Add the following to the crontab (i.e. crontab -e)
# */5 * * * * /home/path_to_make_run/make-run.sh

process=servermonitoringhq 
makerun="/home/path_to_the_job_you_want_running/runjob.sh"  

if pgrep $process > /dev/null         
then                 
  exit         
else         
  $makerun &         
fi 
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.