बूट पर शुरू होने वाली सभी सेवाओं की सूची बनाएं


15

मैं उन सभी सेवाओं (/etc/init.d या upstart या systemd) की एक सूची प्राप्त करने का एक तरीका ढूंढ रहा हूं, जो कि बूट शुरू (या चालू होने की) होने वाली हैं।

आपको सभी शुरुआती सेवाओं की सूची कैसे मिलेगी? - मुझे पता है कि सवाल है, और यह उपयोग करने का सुझाव देता है service --status-all

लेकिन यह मुझे नहीं दिखाता है कि कौन सी सेवाओं को चलाने के लिए समर्थन किया जाता है । यह सभी init स्क्रिप्ट्स को " status" तर्क के साथ कहता है। यह उन सभी सेवाओं की सूची है जो चल सकती हैं।

लेकिन मैं जानना चाहूंगा, अगर एक सेवा, जो बूट पर शुरू की गई थी, अभी भी चल रही है।

उदाहरण…

मेरे पास वेबफोर्स स्थापित हैं। लेकिन मैं नहीं चाहता कि यह बूट पर चले। इस प्रकार मैंने इसे अक्षम कर दिया है sudo update-rc.d webfs disable:। और मेरे पास सांबा भी है और यह बूट में चलना चाहिए। लेकिन इसे रोका जाता है (जो भी कारण हो)। sudo service --status-allयहाँ मेरी मदद नहीं करता है:

$ sudo service --status-all 2>/dev/null | grep -E 'samba$|webfs'
 [ - ]  samba
 [ - ]  webfs

दोनों बंद हैं, लेकिन मुझे कोई सुराग नहीं मिला, कि एक (सांबा) माना जाता है।

इसलिए…

मैं उन सभी सेवाओं की सूची कैसे प्राप्त कर सकता हूं जो बूट पर शुरू हो रही हैं? और, एक विस्तार के रूप में, इन सेवाओं की "स्थिति" प्राप्त करने का एक आसान तरीका है (यदि नहीं, तो मैं बस इस सूची पर लूप करूंगा और "सेवा $ सेवा की स्थिति", या ऐसा कुछ चलाऊंगा)।

धन्यवाद, अलेक्जेंडर

2015-05-04 को संपादित करें: मैं Ubuntu 14.04 पर हूं।

इस सवाल का मुख्य ध्यान निम्नलिखित है:

लेकिन मैं जानना चाहूंगा, अगर एक सेवा, जो बूट पर शुरू की गई थी, अभी भी चल रही है।

इस वजह से, initctl listज्यादा मदद नहीं करता है। यह वास्तव में /etc/init.dस्क्रिप्ट द्वारा शुरू की गई सेवाओं (अपस्टार्ट स्क्रिप्ट की तुलना में /etc/init) को ध्यान में नहीं रखता है ।

इसके अलावा सूची में /etc/rc?.d/S*मदद नहीं करता है। यह उन सेवाओं की सूची तैयार करेगा, जो किसी दिए गए रनवे में शुरू की गई हो सकती हैं। यह मुझे नहीं दिखाता है, अगर एक सेवा, जिसे शुरू किया जाना चाहिए, अभी भी चल रहा है।

मूल रूप से, मैं svcs -xउबंटू के लिए सोलारिस से कुछ ढूंढ रहा हूं । साथ svcs -x, मैं उत्पादन करता है, तो एक सेवा है, जो शुरू किया गया था, अब और नहीं चल रहा है होगा। यह, मुझे उबंटू के लिए भी आवश्यकता होगी।

कारण: मैं अपने Icinga / Nagios निगरानी प्रणाली के लिए एक (अधिक या कम ...) सामान्य जांच करना चाहता हूं, जो मुझे चेतावनी देगा, यदि कोई सेवा अब और नहीं चल रही है, जो चलनी चाहिए। जैसा कि हम कई अलग-अलग ग्राहकों के लिए कई अलग-अलग सर्वर प्राप्त कर चुके हैं, यह वास्तव में "महत्वपूर्ण" सेवाओं की सूची को परिभाषित करने का पैमाना नहीं है।


कौन सा Ubuntu संस्करण?
एबी


@Parto उस प्रश्न में स्वीकृत उत्तर वह initctl listसूची है जो शुरू होने वाली / चलने वाली प्रक्रियाओं को सूचीबद्ध करती है, लेकिन उस सूची में वे प्रक्रियाएँ भी शामिल होंगी जिन्हें मैन्युअल रूप से शुरू किया गया है
Sergiy Kolodyazhnyy

@AB मैं Ubuntu 14.04 पर हूं।
अलेक्जेंडर स्कवार

@Parto askubuntu.com/questions/218/… काफी जवाब नहीं देता है। जैसा कि @Serg ने लिखा था, वहां जवाब का उपयोग करना था initctl list। लेकिन यह वास्तव में इसका जवाब नहीं देता है, क्योंकि यह मैन्युअल रूप से शुरू की गई सेवाओं को भी दिखाएगा। और यह सेवाओं को नहीं दिखाता है, जो नहीं चल रहे हैं।
अलेक्जेंडर स्कवार

जवाबों:


19

सभी सेवाएं स्टार्टअप पर शुरू होती हैं:

initctl list

सिस्टम में मौजूद सभी सेवाओं की सूची:

service --status-all

गलत। न ही सक्षम सेवाओं की सूची प्रदान करें (स्टार्टअप पर शुरू)। वे सभी ज्ञात सेवाओं (जिनमें से कुछ को अक्षम किया जा सकता है) दिखाते हैं और चाहे वे वर्तमान में चल रहे हों या नहीं (जिसका मतलब यह नहीं है कि वे स्वचालित रूप से शुरू हो गए हैं)।
रीनियर पोस्ट

2

यहाँ मेरे oneliner है grep -i 'runlevel' /etc/init/* | awk '!/#/ && /start on/ && /2/ {gsub("/"," "); print $0 }' | cut -d ' ' -f4-

थोड़ा क्लीनर आउटपुट के साथ प्राप्त किया जा सकता है grep -i 'runlevel' /etc/init/* | awk '/start on/ && /2/ {gsub("/"," "); gsub(":", " ");gsub(".conf"," "); print $3 }'

अब विवरण में जाने देता है। अपस्टार्ट जॉब्स सभी में संग्रहीत हैं /etc/init/, है ना? सभी नौकरियों में एक लाइन होती है जिसमें कहा जाता है कि वे किस रनवे पर शुरू होते हैं। रनलेवल 2 एक सामान्य बूट, डिफॉल्ट रनलेवल है। इसलिए अगर हम सभी लाइनों को कहते हैं runlevelऔर grep के स्वच्छ आउटपुट को awk के साथ केवल 2 लाइनों के साथ मिलान करने के लिए start onऔर रनलेवल # 2 के साथ, हम अपस्टार्ट नौकरियों की सूची प्राप्त करते हैं। बाकी की जरूरत सिर्फ फ़ाइल बनाने के लिए, / जगह फ़ाइल नामों में जगह बनाने के लिए है, और उन फाइलों के लिए रास्ता काट दिया, जो खुद फ़ाइल नाम छोड़ रहे हैं।

यह !/#/हिस्सा संभवत: शुरू किए गए निर्देशों का उल्लेख करने के लिए है, जिन्हें मैंने व्यक्तिगत रूप से मैन्युअल रूप से जोड़ा था।

अन्य बातों के अलावा, /etc/rc2.dजहां (यदि मैं सही तरीके से समझता हूं) तो आपके पास प्राथमिकता वाले स्क्रिप्ट कम हैं।

इसके लिए क्रूड वन-लाइनर है: ls /etc/rc2.d/* | grep S | awk '{sub("S"," "); print $2}

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

जैसा कि मुरू ने टिप्पणियों में ठीक से बताया है, ऐसी /etc/init/*.overrideफाइलें भी हैं , जो "।। यह बता सकती हैं कि कैसे कोई काम बिना सीधे अपनी कॉन्फ़िगरेशन फ़ाइल को संशोधित किए चलेगा" ( init manpage )

वर्तमान समय में, क्योंकि मुझे इन फ़ाइलों के साथ बहुत अनुभव नहीं है, मैं केवल उन सेवाओं को देखने का सुझाव दे सकता हूं। आरंभ करने के लिए बताई गई सेवाओं को सूचीबद्ध करने के लिए 'grep' मैनुअल '/etc/init/*.override' का उपयोग करके। मैन्युअल रूप से initctlया servicesआज्ञाओं के साथ ।


ध्यान दें कि ईवेंट निर्भरताओं के कारण, यह आसानी से निर्धारित नहीं किया जा सकता है कि किसी दी गई सेवा के परिणामस्वरूप अन्य सेवाएं शुरू हो रही हैं या नहीं। .overrideफाइलों का छोटा मामला भी है ।
मूरू

@ शेर का शुक्रिया। लेकिन यह केवल ऊपर के सामान के साथ संबंधित है। इसके अलावा "ls /etc/rc2.d/* ..." बहुत मदद नहीं करता है। यह दिखाएगा कि कौन सी सेवाएं शुरू की गई हैं। लेकिन यह नहीं दिखा कि कौन सी सेवाएं अभी भी चल रही हैं। मुझे लगता है, मेरी पोस्ट का मुख्य बिंदु स्पष्ट नहीं था। मैं तलाश कर रहा हूं: लेकिन मैं जानना चाहूंगा, अगर एक सेवा, जिसे बूट पर शुरू किया गया था, अभी भी चल रहा है। अगर आप सोलारिस को नहीं जानते हैं। वहाँ, मैं बस "svcs -x" करूँगा, और अगर यह कुछ देता है, तो मुझे पता है कि कुछ नहीं चल रहा है। मुझे उबंटू के लिए कुछ इस तरह की आवश्यकता होगी।
अलेक्जेंडर स्कवार

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

@ अच्छी तरह से - यदि आप पेशकश कर रहे हैं;)
अलेक्जेंडर स्कवार

2

सभी सेवाओं और संबंधित रनवे की स्थिति की सूची बनाएं - chkconfig शैली:

# sysv-rc-conf --list

acpid        2:on       3:on    4:on    5:on
apache-htcac 0:off      1:off   2:off   3:off   4:off   5:off   6:off
apache2      0:off      1:off   2:on    3:on    4:on    5:on    6:off

सभी सूचीबद्ध सूचीबद्ध इंटरएक्टिव पाठ:

# sysv-rc-conf

l SysV Runlevel Config   -: stop service  =/+: start service  h: help  q: quit qk
x 
x service      1       2       3       4       5       0       6       S 
x ----------------------------------------------------------------------------
x acpid       [ ]     [X]     [X]     [X]     [X]     [ ]     [ ]     [ ]
x apache-ht$  [ ]     [ ]     [ ]     [ ]     [ ]     [ ]     [ ]     [ ]
x apache2     [ ]     [X]     [X]     [X]     [X]     [ ]     [ ]     [ ]
x
x Use the arrow keys or mouse to move around.      ^n: next pg     ^p: prev pg
x                        space: toggle service on / off

नहीं होने पर इसे स्थापित करना पड़ सकता है:

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