लिनक्स में रोके जाने पर किसी सेवा की निगरानी और पुनः आरंभ कैसे करें


24

वास्तव में मुझे यकीन नहीं है कि मुझे शेल लिपियों का उपयोग करना चाहिए या यदि पहले से ही कुछ तरीके हैं। लेकिन हम जो भी दृष्टिकोण का उपयोग करते हैं, मैं हर समय एक सेवा को चालू रखना चाहूंगा।

मान लीजिए iptablesएक उदाहरण के रूप। फिर ..

  • जब भीiptables सेवा है stoppedया (दूसरे शब्दों में) नहीं चल रहा है, मैं इसे होना चाहते हैं started(या restartedस्वचालित रूप से) .. जब भी यह बंद कर दिया है (या नहीं चल रहा है)।
  • दूसरे सरल शब्दों में, मैं हर समय एक सेवा को चालू रखना चाहता हूं ।

(हो सकता है कि मैं जांच करने के लिए एक उचित आवृत्ति दे सकता हूं, अगर रियल-टाइम चेकिंग समस्या है। तो चलिए बताते हैं, हर 5 मिनट में)

एकमात्र तरीका जो मैं सोच सकता था, वह है क्रोन टैब के साथ शेल लिपियों का उपयोग करना।

  • क्या कोई स्मार्ट समाधान है?

धन्यवाद!


यदि आप ऐसा नहीं करना चाहिए। मान लीजिए कि कोई सेवा अ-कॉन्फ़िगर है, तो आपकी रणनीति क्या हासिल करेगी? रिट्रीवल की एक अनंत सूची। आपको इसके बजाय एक क्रॉस्टैब स्क्रिप्ट लिखनी चाहिए कि alertsआप कुछ काम नहीं कर रहे हैं।
मारियसमैट्यूटिया

मैं मूल प्रश्न के लिए सीधे समाधान के बारे में उत्सुक हूं। और इसके अलावा, मेरे पास एक ऐसी सेवा है जो restartedकिसी भी कारण से बस जब भी रुकती है, बस उसे करने की आवश्यकता होती है पुनरारंभ करने में कोई समस्या नहीं है।
劇場

1
आपका अपना सुझाया समाधान काफी स्मार्ट है। यदि आप इसे सही तरीके से उपयोग करते हैं (यदि सेवा पहले से ही चल रही है तो तुरंत बाहर निकलें, आपको अलर्ट करें कि सेवा बंद हो गई है ताकि आप इसे ठीक कर सकें, और इसी तरह ....) यह सबसे सरल तरीका है। एक सेवा जो स्वचालित रूप से बंद हो जाती है एक समस्याग्रस्त सेवा है, इसलिए अंततः आपको इसे ठीक करना चाहिए, लेकिन अन्यथा, एक अस्थायी पैच के रूप में, एक क्रोन स्क्रिप्ट या एक और सुपर-सरल डेमन जो कि ज्यादातर समय सोता है, वह काम ठीक ही करेगा। Mmonit.com/monit जैसे कुछ उपकरण हैं, लेकिन मुझे लगता है कि अंत में वे सभी एक समान दृष्टिकोण का उपयोग करते हैं

@ मारीमैटुटिया, मैं आपकी बात से सहमत हूं लेकिन यह सेवा की प्रकृति पर निर्भर करता है, और अधिकांश प्रक्रिया प्रबंधक कई बार असफल होने के बाद वापस आ जाएंगे। यह स्वाभाविक रूप से समाप्त होने की प्रक्रिया के लिए पूरी तरह से उचित है, और हमारे लिए इसे स्वचालित रूप से पुनरारंभ करना चाहते हैं, जैसे कि एक कार्यकर्ता जो एक कतार से नौकरी उठाता है और प्रत्येक रन के बाद समाप्त होता है। यह भी sysadmins के लिए एक उपयोगी उपकरण है जो कि बीस्पोक मेमोरी-लीकिंग कोड से पीड़ित है - एक प्रक्रिया के जीवनकाल को सीमित करता है और हाथ से बाहर निकलने से पहले इसे स्वचालित रूप से फिर
एलेक्स फोर्ब्स

जवाबों:


25

अपडेट मार्च 2018

यह उत्तर अब काफी पुराना है, और चूंकि यह लिखा गया था कि सिस्टमड ने लिनक्स पर pid1 युद्ध जीता है। इस प्रकार, आपको शायद एक सिस्टमड यूनिट बनाना चाहिए , अगर सिस्टमड आपके वितरण में बनाया गया है (जो उनमें से अधिकांश है)।

उत्तर के लिए नीचे उत्तर संरक्षित है।


ऊपर दिया गया मौन उत्तर मान्य है, लेकिन मुझे लगा कि मैं कुछ विकल्पों का उल्लेख करूंगा:

यह ध्यान में रखने योग्य है कि आपके ऑपरेटिंग सिस्टम ने पहले ही प्रक्रिया प्रबंधन समस्या को हल कर दिया है। परंपरागत रूप से, लिनक्स ने sysvinit का उपयोग किया है, जो मूल रूप से स्क्रिप्ट का संग्रह है जिसे आप init.d में देखते हैं। हालांकि यह बहुत गूंगा है और प्रक्रियाओं की निगरानी नहीं कर सकता है, init.d स्क्रिप्ट जटिल हैं और इसे अच्छे कारण के लिए प्रतिस्थापित किया जा रहा है।

अधिक आधुनिक ऑपरेटिंग सिस्टम सिसविनीट को बदलने के लिए शुरू हो रहे हैं, और सबसे आगे उपस्टार्ट और सिस्टमड हैं। डेबियन सिस्टमड की ओर झुकाव कर रहा है, उबंटू विकसित हुआ है और बहुत पहले से ही अपस्टार्ट में परिवर्तित हो गया है, और जैसे डेबियन रेडहट / सेंटोस / फेडोरा सिस्टमड की ओर बढ़ रहे हैं। इस प्रकार यदि आप एक OS का उपयोग करते हैं जो पहले से ही sysvinit की जगह ले चुका है तो मैं इसका उपयोग करने की सलाह दूंगा जो अंतर्निहित है। लिपियों को init स्क्रिप्ट की तुलना में लिखना बहुत आसान है।

मैंने रनिट का उपयोग किया है और यह काफी पसंद है, लेकिन उपयोग करने में सबसे आसान पर्यवेक्षक है। यह बहुत अच्छी तरह से प्रलेखित है, लगभग कहीं भी काम करता है और सभी प्रमुख वितरणों में पैक किया जाता है।

लेकिन आप जो भी करते हैं, कृपया, कृपया, कृपया एक शेल स्क्रिप्ट का उपयोग न करें। उस दृष्टिकोण के साथ बहुत सारी चीजें गलत हैं!


सिसविनीट के साथ कैसे करें?
अश्वारोही

12

iptablesएक खराब उदाहरण है क्योंकि यह वास्तव में एक सेवा या डेमॉन नहीं है जो चल रहा है, लेकिन कर्नेल का हिस्सा है। आप वास्तव में "बंद" नहीं iptablesकर सकते, आप केवल इसे एक कॉन्फ़िगरेशन दे सकते हैं और "रोक" सकते हैं इसमें इसे एक खाली कॉन्फ़िगरेशन देना शामिल है। वास्तव में मुझे लिनक्स सिस्टम क्रैश हो गया है, लेकिन पोर्ट फॉरवर्डिंग सेटअप का उपयोग iptablesकरना जारी है।

वैसे भी, एक उपयोगिता कहा जाता monitहै कि आप क्या चाहते हैं। यदि आप डेबियन का उपयोग कर रहे हैं तो यह apt-get install monitदूर है। यह थोड़ा लचीला है, लेकिन इसके बारे में जानने के लिए शामिल होना चाहिए।


3

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

 file name: uptime.sh

 #!/bin/bash
 #service monitoring
 /bin/netstat -tulpn | awk '{print $4}' | awk -F: '{print $4}' | grep ^80$ > /dev/null   2>/dev/null
 a=$(echo $?)
 if test $a -ne 0
 then
 echo "http service down" | mail -s "HTTP Service DOWN and restarted now" root@localhost
 /etc/init.d/httpd start > /dev/null 2>/dev/null
 else
 sleep 0
 fi
 /bin/netstat -tulpn | awk '{print $4}' | awk -F: '{print $4}' | grep ^53$ > /dev/null   2>/dev/null
 b=$(echo $?)
 if test $b -ne 0
 then
 echo "named service down" | mail -s "DNS Service DOWN and restarted now" root@localhost
 /etc/init.d/named start > /dev/null 2>/dev/null
 else
 sleep 0
 fi

 Cron setup:
 */5 * * * * /root/uptime.sh > /dev/null 2>/dev/null

MariusMatutiae की बात सही है लेकिन हमने अपने सर्वर में HTTPD और DNS सेवा की निगरानी के लिए एक साधारण स्क्रिप्ट की है, जो कि इसकी ठीक चल रही है। जब कभी सेवा बंद हो जाती है, तो स्क्रिप्ट सेवा को फिर से शुरू कर देगी और हमें अलर्ट कर देगी, हमें सेवा के बारे में बहुत अलर्ट / मेल मिल जाएंगे, फिर हम इस पर एक जांच कर सकते हैं।
रंजीथकुमार T

1

डेस्कटॉप के लिए वैकल्पिक समाधान (KDE):

हम एप्लेट / विजेट सर्वर स्थिति के साथ एक सेवा देख सकते हैं ... इसे स्थापित करने के बाद बस अपनी सेवा की निगरानी के लिए विजेट में एक कमांड जोड़ें

उदाहरण : systemctl status httpd.service

केडीई 4 संस्करण: https://store.kde.org/content/show.php?content=101336

केडीई 5 संस्करण: https://store.kde.org/p/1190292/


0

मुझे पता है कि यह प्रश्न पूछे जाने के बाद से कई साल हो गए हैं। लेकिन सिस्टमड (ज्यादातर सेंटो और आरईएचएल के साथ उपलब्ध) के साथ आप इस बैश कमांड को क्रोन के साथ चला सकते हैं ताकि सर्विस डाउन हो जाए।

#!/bin/bash

service=$@
/bin/systemctl -q is-active "$service.service"
status=$?
if [ "$status" == 0 ]; then
    echo "OK"
else
    /bin/systemctl start "$service.service"
fi

इसे अपने बिन डायरेक्टरी में सेव करें और इसे मॉनिटर की तरह नाम दें। इसे उचित फ़ाइल अनुमति दें। फिर इसे चलाएं

sudo monitor redis

यदि आप रेडिस सेवा की जाँच करना चाहते हैं और यदि आवश्यक हो तो पुनः आरंभ / शुरू करें।

सबसे आखिर में इसे अपने क्रॉन जॉब में शामिल करें।

आशा है कि यह मदद करेगा


0

In6 / svc पर्यवेक्षण की लंबी सूची में जोड़ने के लिए, S6 के उप-निर्देशिका के रूप में, 66, ब्लॉक पर एक नया बच्चा है, जो s6 सेवा प्रबंधन को संभालता है और एक तेज, हल्के, उपयोगकर्ता के अनुकूल तरीके से लॉगिंग करता है। यह Obarun-Linux https://web.obarun.org/software के लिए आधिकारिक दस्तावेज का लिंक है

यह इस 66 सॉफ़्टवेयर का उपयोग करने और s6 http://sysdfree.wordpress.com/266 की समझ बनाने का एक तरीका है

इसकी स्थिर रिलीज के बाद से केवल एक बग को 4.20 -> 5.0 से कर्नेल परिवर्तनों से संबंधित पाया गया, अन्य सभी रिपोर्ट की गई समस्याओं को नए सीखने वाले लोगों के साथ करना पड़ा। यदि सेवा प्रबंधन को इससे अधिक सरल बनना पड़ा, तो ms-windows (Linus forbid) पर स्विच करना बेहतर हो सकता है। वास्तविक जीवन में यह देखने के लिए कि यह कैसे काम कर सकता है, केवल एक ओबारुन लाइव को डाउनलोड करना है। सेवाओं को स्थापित करें और उनकी 66-स्क्रिप्ट्स उन्हें सक्षम करें, उन्हें मारें, उनके लॉग देखें, उन्हें रोकें और उन्हें शुरू करें (सक्षम करते समय), एक पेड़ में गुच्छा सेवाओं और सेवा के पेड़ शुरू करें और सभी को एक साथ रोकें, उपयोगकर्ता स्तर की सेवाएं अलग से लें सिस्टम से। यह वही करता है जो s6 अच्छी तरह से करता है और यह उपयोगकर्ता के लिए s6 के तहत बुलेटप्रूफ सिस्टम का शोषण करने के लिए सरल बनाता है।

चित्र डाउनलोड यहाँ देखे जा सकते हैं: https://web.obarun.org/index.php?id=74 md5 जाँच फ़ाइलें https://repo.obarun.org/iso/

Init और सर्विस मैनेजमेंट के अलावा s6 / 66 का सिस्टम पर किसी और चीज से कोई निर्भरता नहीं है। यह आधार प्रणाली की एक परत है जो बाकी सॉफ्टवेयर को अपने आप काम करने के लिए छोड़ देती है, init / svc-mgmt ब्लाइंड। सभी s6 और 66 को C में लिखा गया है और यह linux specific, या glibc specific नहीं है। Skarnet's (s6 लेखक) सर्वर लगभग एक दशक से बिना किसी रुकावट के मसल कस्टल सिस्टम पर चल रहे हैं। अल्पाइन, शून्य और एडेलि के पास वर्तमान में अपने रिपॉजिटरी पर s6 सॉफ्टवेयर भी है, Adelie डिफ़ॉल्ट रूप से सेवा पर्यवेक्षण के लिए इसका उपयोग करता है। शून्य अब 66 के रूप में अच्छी तरह से किया जाता है। मुझे नहीं पता कि xxBSD या अन्य xxIX सिस्टम में s6 को किसने और कैसे बढ़ाया है।

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