सिस्टम शटडाउन के कारण लॉग से कैसे पता करें?


104

जैसे मैं यह देख रहा हूँ /var/log/messages:

Mar 01 23:12:34 hostname shutdown: shutting down for system halt

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


2
तो इस बार के साथ कुछ किस्मत थी /var/log/acpid: बिजली बटन हिट हो गया था। किसी भी अन्य विचारों, जहां अगर acpid एक सुराग नहीं देता है देखने के लिए?
एलेक्स

जवाबों:


45

केवल रूट विशेषाधिकार प्राप्त कार्यक्रम ही किसी प्रणाली को शालीनतापूर्वक बंद कर सकते हैं। इसलिए जब एक सिस्टम सामान्य तरीके से बंद हो जाता है, तो यह या तो रूट विशेषाधिकार वाला उपयोगकर्ता होता है या एक एसपीआई स्क्रिप्ट। दोनों मामलों में आप लॉग की जाँच करके पता लगा सकते हैं। एक एसीपी शटडाउन पावर बटन प्रेस, ओवरहीटिंग या कम बैटरी (लैपटॉप) के कारण हो सकता है। मैं तीसरा कारण भूल गया, यूपीएस सॉफ्टवेयर जब बिजली की आपूर्ति विफल हो जाती है, जो वैसे भी अलर्ट भेज देगा।

हाल ही में मेरे पास एक ऐसी प्रणाली थी, जो बार-बार बिना सोचे-समझे बंद करने के लिए शुरू हुई थी, यह पता चला कि यह बहुत गर्म था और मोबाइल को जल्दी से बंद करने के लिए कॉन्फ़िगर किया गया था। सिस्टम में लॉग्स को सहेजने का मौका नहीं था, लेकिन सौभाग्य से सिस्टम के तापमान की निगरानी करने से पता चलता है कि यह बंद होने से पहले ही बढ़ना शुरू हो गया था।

तो अगर यह एक सामान्य शटडाउन है, तो इसे लॉग इन किया जाएगा, अगर यह एक घुसपैठ है ... शुभकामनाएं, और यदि यह एक ठंडा शटडाउन है, तो आपके पर्यावरण को नियंत्रित करने और उसकी निगरानी करने का सबसे अच्छा मौका है।


118

निम्नलिखित आदेश आज़माएँ:

अंतिम रिबूट प्रविष्टियों की प्रदर्शन सूची: last reboot | less

अंतिम शटडाउन प्रविष्टियों की प्रदर्शन सूची: last -x | less

या अधिक सटीक: last -x | grep shutdown | less

आपको नहीं पता होगा कि यह किसने किया था। यदि आप यह जानना चाहते हैं कि यह किसने किया है, तो आपको थोड़ा कोड जोड़ना होगा, जिसका अर्थ है कि आप अगली बार जानेंगे।

मैंने यह संसाधन ऑनलाइन पाया है। यह आपके लिए उपयोगी हो सकता है:

कैसे पता लगाया जाए कि किसने या मेरे सिस्टम को कैसे रोका


25
खैर, यह मुझे नहीं बताता कि बंद का कारण क्या था, केवल जब यह किया गया था। जो मुझे पहले से पता है, मेरा सवाल देखिए।
एलेक्स

1
अधिक सटीकlast -x shutdown
राहुल पाटिल

5
डाउनवोट किया गया, क्योंकि यह प्रश्न का उत्तर नहीं देता है।
toogley'

1
लिंक विशेष रूप से "मुझे कैसे पता चलेगा कि किसने या मेरे सिस्टम को रोका (ओल्ड स्को यूनिक्स)? "
वोल्फगैंग

16

जाँच करने के लिए कुछ चीज़ें हैं:

अंतिम -x कमांड के आउटपुट की जांच करें

इस कमांड को चलाएँ * और आउटपुट की तुलना नीचे के उदाहरणों से करें:

last -x | head | tac

सामान्य शटडाउन उदाहरण

एक सामान्य शटडाउन और पावर-अप इस तरह दिखता है (ध्यान दें कि आपके पास शटडाउन इवेंट है और फिर सिस्टम बूट इवेंट है):

runlevel (to lvl 0)   2.6.32- Sat Mar 17 08:48 - 08:51  (00:02) 
shutdown system down  ... <-- first the system shuts down   
reboot   system boot  ... <-- afterwards the system boots
runlevel (to lvl 3)       

कुछ मामलों में आप इसे देख सकते हैं (ध्यान दें कि शटडाउन के बारे में कोई रेखा नहीं है लेकिन सिस्टम रनलेवल 0 पर था जो "पड़ाव राज्य" है):

runlevel (to lvl 0)   ... <-- first the system shuts down (init level 0)
reboot   system boot  ... <-- afterwards the system boots
runlevel (to lvl 2)   2.6.24-... Fri Aug 10 15:58 - 15:32 (2+23:34)   

अप्रत्याशित शटडाउन उदाहरण

पावर लॉस से एक अप्रत्याशित शटडाउन इस तरह दिखता है (ध्यान दें कि आपके पास सिस्टम बूट इवेंट बिना पूर्व सिस्टम शटडाउन इवेंट के है):

runlevel (to lvl 3)   ... <-- the system was running since this momemnt
reboot   system boot  ... <-- then we've a boot WITHOUT a prior shutdown
runlevel (to lvl 3)   3.10.0-693.21.1. Sun Jun 17 15:40 - 09:51  (18:11)    

लॉग / in / var की जाँच करें

सबसे दिलचस्प लॉग संदेशों को फ़िल्टर करने के लिए एक बैश कमांड यह है:

grep -iv ': starting\|kernel: .*: Power Button\|watching system buttons\|Stopped Cleaning Up\|Started Crash recovery kernel' \
  /var/log/messages /var/log/syslog /var/log/apcupsd* \
  | grep -iw 'recover[a-z]*\|power[a-z]*\|shut[a-z ]*down\|rsyslogd\|ups'

जब एक अनपेक्षित पावर ऑफ या हार्डवेयर विफलता होती है, तो फाइल सिस्टम ठीक से अनमाउंट नहीं होगा इसलिए अगले बूट में आप इस तरह शामिल हो सकते हैं:

EXT4-fs ... INFO: recovery required ... 
Starting XFS recovery filesystem ...
systemd-fsck: ... recovering journal
systemd-journald: File /var/log/journal/.../system.journal corrupted or uncleanly shut down, renaming and replacing.

जब सिस्टम शक्तियां बंद हो जाती हैं क्योंकि उपयोगकर्ता ने पावर बटन दबाया है, तो आपको इस तरह से लॉग मिलते हैं:

systemd-logind: Power key pressed.
systemd-logind: Powering Off...
systemd-logind: System is powering down.

केवल जब सिस्टम व्यवस्थित रूप से बन्द हो जाता है तो आपको इस तरह से लॉग मिलते हैं:

rsyslogd: ... exiting on signal 15

जब सिस्टम ओवरशूटिंग के कारण बंद हो जाता है तो आपको इस तरह से लॉग मिलते हैं:

critical temperature reached...,shutting down

यदि आपके पास एक यूपीएस है और बिजली और शटडाउन की निगरानी करने के लिए एक डेमॉन चल रहा है, तो आपको स्पष्ट रूप से इसके लॉग की जांच करनी चाहिए (एनयूटी लॉग ऑन / वर्जन / लॉग / मैसेज लेकिन एपीपीड्स लॉग ऑन / वर्जन / लॉग / एपिच्सड *)


टिप्पणियाँ

*: यहाँ lastअपने आदमी पृष्ठ से विवरण है :

last [...] prints information about connect times of users. 
Records are printed from most recent to least recent.  
[...]
The special users reboot and shutdown log in when the system reboots
or (surprise) shuts down. 

हम headनवीनतम 10 घटनाओं को रखने के लिए उपयोग करते हैं और हम tacऑर्डर को पलटने के लिए उपयोग करते हैं ताकि हम इस तथ्य से भ्रमित न हों कि पिछले सबसे कम से कम हाल की घटनाओं से प्रिंट होता है।


अच्छा उत्तर। अपने डेबियन 9 में, मैंने एक सामान्य शटडाउन के लिए लाइन "रनलेवल (एलवीएल 0)" नहीं देखा।
ज्रूव

@jruv आपको क्या पसंद आया? मुझे लगता है कि यह "शटडाउन सिस्टम डाउन" होना चाहिए था
ndemou

यह एक महान उदाहरण है, लेकिन tacकमांड के बिना फिर से होने से लाभ हो सकता है
mbigras

परीक्षा / var / log, यह एक अच्छी कमांड और अच्छी तरह से लिखित जानकारी है। धन्यवाद!
हावर्ड ली

11

कुछ संभावित लॉग फ़ाइलों का पता लगाने के लिए: (एक उबंटू प्रणाली मिला, लेकिन मुझे उम्मीद है कि वे सबसे लिनक्स / यूनिक्स सिस्टम पर मौजूद हैं)

/var/log/debug
/var/log/syslog (will be pretty full and may be harder to browse)
/var/log/user.log
/var/log/kern.log
/var/log/boot

फिर, ये लॉग फाइलें उबंटू सिस्टम पर मौजूद हैं, इसलिए फ़ाइल नाम अलग हो सकते हैं। tailआदेश अपने दोस्त है।


8

lastसिस्टम शटडाउन प्रविष्टियों को प्रदर्शित करने और स्तर परिवर्तन और फ़िल्टरिंग को चलाने का उपयोग करके सरल करें shutdownऔर reboot:

last -x shutdown reboot

1
ndefontenay ने पहले ही उल्लेख किया है। योगदान देने के लिए धन्यवाद, लेकिन पहले मौजूदा उत्तर पढ़ें।
गाइल्स

हालांकि मेरा जवाब सरल ndefontenay एक है, लेकिन धन्यवाद।
झवरास

1
@ गाइल्स I कहते हैं कि यह सूक्ष्म रूप से भिन्न है, cat foo | grep barबनाम grep bar fooतरह तरह से, ऐसा प्रतीत होता है कि अंतिम स्वयं को फ़िल्टर करने में सक्षम है।
xenoterracide

8

पूरी तरह से संतुष्ट नहीं

मुझे डेबियन 7.8 पर एक समान आवश्यकता थी और निरीक्षण करें कि मूल रूप से लॉग में कोई स्पष्ट और स्पष्ट संदेश नहीं है, जो थोड़ा आश्चर्य की बात है।

ग्रीप के माध्यम से /var/logमशीन के बंद होने का समय बताएगा, उचित डेमॉन शटडाउन आदि दिखाएगा, लेकिन प्रारंभिक कारण नहीं।

shutdown[25861]: shutting down for system halt

उल्लिखित अन्य समाधानों ( last -x) ने बहुत मदद नहीं की।

यह देखते हुए कि यह कैसे काम करता है

पढ़ना /etc/acpi/powerbtn-acpi-support.shजिसमें शामिल हैं:

अगर [-x /etc/acpi/powerbtn.sh]; फिर
    # एसपीआईडी ​​पैकेज से पुराने कॉन्फिग स्क्रिप्ट के साथ संगतता
    /etc/acpi/powerbtn.sh
elif [-x /etc/acpi/powerbtn.sh.dpkg-bak]; फिर
        # एसपीआईडी ​​पैकेज से पुराने कॉन्फिग स्क्रिप्ट के साथ संगतता
    # जो अभी भी आसपास है क्योंकि इसे व्यवस्थापक द्वारा बदल दिया गया था
        /etc/acpi/powerbtn.sh.dpkg-bak
अन्य
    # सामान्य हैंडलिंग।
    / sbin / shutdown -h -P - अब "पावर बटन दबाया गया"
फाई

ध्यान दें कि एक स्पष्ट पाठ shutdownकमांड के पैरामीटर के रूप में दिया गया है । मुझे उम्मीद है कि शटडाउन प्रोग्राम द्वारा स्ट्रिंग को स्वचालित रूप से लॉग इन किया जाएगा।

बेहतर लॉग के लिए समायोजन

वैसे भी, एक स्पष्ट संदेश प्राप्त करने के लिए मैंने नीचे दिए गए पाठ को मूल के रूप में एक नए बनाए /etc/acpi/powerbtn.shगए निष्पादन योग्य के साथ रखाchmod a+x /etc/acpi/powerbtn.sh

#! / Bin / श
लकड़हारा /etc/acpi/powerbtn.sh में, संभवतः "पावर बटन दबाया गया"
    / sbin / shutdown -h -P - अब "पावर बटन दबाया गया"

इस तरह से करना संभवत: संशोधित करने की तुलना में एक लंबे समय तक चलने वाला बदलाव होगा /etc/acpi/powerbtn-acpi-support.sh। बाद वाला विकल्प संभवतः पैकेज के अगले उन्नयन पर अपना प्रभाव खो देगा acpi-support-base

उबंटू 14.04 की तुलना में नोटिस यह अलग तरह से करता है ( /etc/acpi/powerbtn.shपहले से ही acpidपैकेज से अलग सामग्री के साथ मौजूद है )। इसके अलावा, डेबियन 8 शायद इसे अलग तरीके से करता है। बेझिझक वेरिएंट पेश करें।

फायदा!

और अब जब पावर बटन दबाया जाता है, नीचे की तरह एक लाइन में प्रकट होता है /var/log/messages, /var/log/syslogऔर /var/log/user.log:

logger: in /etc/acpi/powerbtn.sh, presumably Power button pressed

अब लॉग में एक स्पष्ट संदेश है।


स्थापना acpi-support-baseऔर acpidपैकेजों पर विचार करने के सुझाव के लिए @Bielecki का धन्यवाद । मैंने अपना परीक्षण नहीं किया है। क्या आप यह बता सकते हैं कि किस वितरण और संस्करण पर इसका लाभ मिलता है?
स्टीफन गौरीचॉन

4

मेरे पास सिर्फ एक भद्दा विचार है, लेकिन शायद यह आपके लिए काम करता है: कमांड दर्ज करें lastऔर सभी उपयोगकर्ताओं के लिए लॉगिन informations की जांच करें। उसके बाद, haltउस समय के लिए आवश्यक अनुमति वाले फ़िल्टर उपयोगकर्ताओं को उस समय लॉग इन किया गया था। फिर उनकी .bash_historyफ़ाइल देखें कि उन्होंने पड़ाव डाला है या नहीं।


1

मेरे मामले में मुझे ओवरहीटिंग की समस्या थी और / g / var / log फ़ोल्डर में 'grep shut *' द्वारा लॉग / in / var / log / syslog मिला।

लॉग की गई त्रुटि यह थी:

Feb 23 15:59:49 luca-LIFEBOOK-A530 kernel: [24746.497174] thermal thermal_zone0: critical temperature reached(99 C),shutting down

1

मेरे केवीएम वीएम पर उसमें चिप (जहां मैंने सोचा था कि क्या एक मेजबान रिबूट ने मेहमानों को साफ बंद किया था), मैंने पाया कि मुझे क्या दिखाने की जरूरत है /var/log/auth.log( last -x shutdownउसी को दिखाने के अलावा )। इन पंक्तियों में दिखाया गया है:

Sep  3 23:56:31 Web systemd-logind[531]: Power key pressed.
Sep  3 23:56:31 Web systemd-logind[531]: Powering Off...
Sep  3 23:56:31 Web systemd-logind[531]: System is powering down.
Sep  3 23:55:45 Web systemd-logind[591]: New seat seat0.
Sep  3 23:55:45 Web systemd-logind[591]: Watching system buttons on /dev/input/event0 (Power Button)
Sep  3 23:55:54 Web sshd[805]: Server listening on 0.0.0.0 port 22.
Sep  3 23:55:54 Web sshd[805]: Server listening on :: port 22.

last -xइन पंक्तियों को दिखाता है, ध्यान दें कि वे सबसे हालिया-प्रथम क्रम में मुद्रित किए जा रहे हैं (यानी अंतिम पंक्ति पहले पढ़ें, और फिर ऊपर जाएं), लेकिन घड़ी के रीसेट के कारण (बूट से पहले 23:56, 23:55 के बाद) पिछली लाइनों में भी स्पष्ट है, यह आदेश थोड़ा चौंकाने वाला लगता है:

runlevel (to lvl 2)   3.13.0-129-gener Sun Sep  3 23:55 - 22:04  (22:08)    
reboot   system boot  3.13.0-129-gener Sun Sep  3 23:55 - 22:04  (22:08)    
shutdown system down  3.13.0-123-gener Sun Sep  3 23:56 - 23:55  (00:00)    
runlevel (to lvl 0)   3.13.0-123-gener Sun Sep  3 23:56 - 23:56  (00:00)

मेरे हिस्से के लिए, यह जांचना कि मेहमान बूट होने पर सफाई से बंद हो जाते हैं, मैं भी मेहमानों में से एक में लॉग इन (ssh) कर सकता हूं, और जब मैं होस्ट को बूट करता हूं, तो टर्मिनल में इन पंक्तियों को प्राप्त करना:

root@Web:~#
Broadcast message from root@Web
        (unknown) at 22:25 ...

The system is going down for power off NOW!
Connection to web closed by remote host.
Connection to web closed.

0

एक स्क्रिप्ट को बंद करने के
लिए स्क्रिप्ट को मूल बंद करने योग्य निष्पादन
BUT इत्यादि सभी मापदंडों को देना चाहिए : स्क्रिप्ट इस पर लॉग इन करती है


2
शटडाउन स्क्रिप्ट यह पहले से ही करती है ( last -x)
फ़ोर्सफेक

-1
cat /usr/adm/syslog

मेरे मामले में यह सर्वर को बंद करने वाला अप सॉफ्टवेयर था।

/etc/rc.d/7/upsd.boot

यह प्रश्न का उत्तर प्रदान नहीं करता है। एक बार आपके पास पर्याप्त प्रतिष्ठा होने के बाद आप किसी भी पोस्ट पर टिप्पणी कर पाएंगे ; इसके बजाय, ऐसे उत्तर प्रदान करें जिन्हें पूछने वाले से स्पष्टीकरण की आवश्यकता न हो । - समीक्षा से
जेफ स्कालर

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