बाद में बंद किए गए संदेशों को कैसे पढ़ें?


18

मैं ल्यूबुन्टू 11.10 का उपयोग कर रहा हूं। हर बार जब मैं शट डाउन करता हूं तो मैं लाल अक्षरों में FAIL पढ़ सकता हूं, लेकिन मैं और नहीं पढ़ सकता।

तो, लॉग संदेशों को कैसे पढ़ें और समस्या को हल करने का प्रयास करें?


Askubuntu के इस जवाब पर एक नज़र डालें । यह आपकी समस्या में आपकी मदद कर सकता है।
सोल्डे 9

सब कुछ पर /var/log/syslogऔर /var/log/messages, तो आप उन्हें और throubleshoot पढ़ने की जरूरत है। आप उपयोग के io redirectionसाथ उपयोग कर सकते error redirectionहैंshutdown command
फ़ारसीगुल्फ़

जवाबों:


14

लगता है कि इस डेटा को किसी फ़ाइल में लॉग इन करने का कोई तरीका नहीं है। बूट प्रक्रिया के लिए, bootlogdपैकेज है जो फ़ाइल बनाता है /var/log/boot, लेकिन शटडाउन / रिबूट प्रक्रिया के लिए कुछ भी नहीं है। जहां तक ​​मैं देख सकता हूं कि rsyslogया तो लॉग इन करने का कोई तरीका नहीं है , और यहां तक ​​कि अगर वहाँ था, तो संदेश rsyslogरोक दिए जाने के बाद मुद्रित होते हैं । मेरे शटडाउन / रिबूट प्रक्रिया का एक हिस्सा रूटफुट को आसानी से रिमूव करना है और बाकी सब कुछ umount करना है, इस फाइल के लिए लॉगिंग के बाद जो अगले बूट में अभी भी वहां होगा लगभग असंभव है।

संदेशों को देखने का सबसे आसान तरीका वास्तविक / से पहले रुकने के लिए /etc/init.d/haltऔर / या /etc/init.d/rebootस्क्रिप्ट को संपादित करना है । के लिए स्क्रिप्ट, कमांड चलाएँ (या एक जीयूआई संपादक का उपयोग) और लाइन है कि वास्तविक पड़ाव करता है के लिए देखो। मेरे लिए यह पंक्ति है:haltreboothaltsudoedit /etc/init.d/halt

halt -d -f $netdown $poweroff $hddown

अन्यथा यह do_stopफ़ंक्शन के अंत में और haltकमांड को कॉल करने वाली एकमात्र लाइन होनी चाहिए । एक बार लाइन मिल जाने के बाद, बस निम्नलिखित के साथ एक नई लाइन डालें:

read -p "Press enter to halt" reply

फ़ाइल सहेजें और बाहर निकलें। अब जब आप शटडाउन करते हैं, तो जब तक आप एंटर (या CTRL-C, CTRL-D, आदि) दबाते हैं, सिस्टम रुक जाएगा। आप स्क्रीन पर छपे संदेशों को पढ़ सकते हैं। यदि पाठ का एक से अधिक स्क्रीनफुल है, तो आप टर्मिनल स्क्रॉलबैक को दबाकर देख सकते हैं Shift+PgUp। यदि यह अभी भी पर्याप्त नहीं है, तो स्क्रॉलबैक बफर के आकार को बढ़ाने के तरीके हैं (शायद एक अलग प्रश्न हालांकि)।

सिस्टम रिबूट होने पर ऐसा करने के लिए, आपको /etc/init.d/rebootफ़ाइल को संपादित करना होगा । यहाँ प्रयुक्त कमांड निश्चित rebootरूप से विपरीत है haltऔर फिर से अंत में होनी चाहिएdo_stop समारोह । मेरे लिए लाइन है:

reboot -d -f -i

फिर से बस ऊपर एक नई लाइन पर निम्नलिखित डालें:

read -p "Press enter to reboot" reply

यह भी ध्यान दें कि इन फ़ाइलों को conffiles के रूप में सूचीबद्ध किया गया है initscripts पैकेज के है। संकुल के अपग्रेड होने पर ये संपादन डिफ़ॉल्ट रूप से बंद नहीं किए जाएंगे, हालांकि वे संघर्ष का कारण बनेंगे।


निम्न स्क्रिप्ट का उपयोग करने के लिए एक और पूर्ण समाधान होगा:

#! /bin/sh
### BEGIN INIT INFO
# Provides:          pause_hook
# Required-Start:
# Required-Stop:     halt reboot
# Default-Start:
# Default-Stop:      0 6
# X-Stop-After:      umountroot
# X-Interactive:     true
# Short-Description: Pause before halt or reboot
# Description:
### END INIT INFO

do_stop () {
    [ -r /etc/pause_hook.conf ] && . /etc/pause_hook.conf

    [ "$PAUSE_HOOK_ENABLED" = true ] && read -p "Press enter to continue" reply
}

case "$1" in
    start)
        # No-op
        ;;
    restart|reload|force-reload)
        echo "Error: argument '$1' not supported" >&2
        exit 3
        ;;
    stop)
        do_stop
        ;;
    *)
        echo "Usage: $0 start|stop" >&2
        exit 3
        ;;
esac

इसमें रखा जाना चाहिए /etc/init.d/pause_hook और निम्नलिखित कमांड के साथ शटडाउन / रिबूट पर चलने के लिए सक्षम किया जा सकता है:

sudo update-rc.d pause_hook defaults

फिर वास्तविक हुक को सक्षम करने के लिए, फाइलें बनाएं /etc/pause_hook.conf लाइन वाली :

PAUSE_HOOK_ENABLED=true

शटडाउन / रिबूट प्रक्रिया को अब संदेश को देखने के लिए समय देने से पहले haltया rebootस्क्रिप्ट को कॉल करने से पहले रोकना चाहिए । यह सक्षम लाइन में टिप्पणी करने / अनधिकृत करने के द्वारा आसानी से अक्षम / पुनः सक्षम किया जा सकता है /etc/pause_hook.confdpkgइस तरह से अपग्रेड करने के दौरान कोई कंफ्यूजन नहीं होगा ।


एक बहुत अच्छा समाधान, विशेष रूप से init स्क्रिप्ट।
मिखाइल मोरफिकोव

4

सबसे आसान समाधान एक तस्वीर के बजाय एक वीडियो लेने की कोशिश करना हो सकता है। आप इसे बाद में फ्रेम-दर-फ्रेम करके देख सकते हैं।


2
मैं विश्वास नहीं कर सकता कि दर्ज किए गए उन संदेशों के साथ कोई फ़ाइल नहीं है !!! मैं वीडियो द्वारा रिकॉर्ड करने का प्रयास करूंगा।
सिगुर

7
फाइलसिस्टम अनमाउंट होने के बाद उन कुछ मेसेज को प्रिंट किया जाता है! इसलिए वे सभी एक फ़ाइल में समाप्त नहीं हो सकते।
जिम पेरिस

4

वास्तविक समय में लॉग देखकर

मैंने पाया है कि शटडाउन के दौरान आमतौर पर एक उबंटू लोगो और चमकती रोशनी होती है, जिसे शटडाउन प्रक्रिया के लॉग के बजाय दिखाया गया है। यदि त्रुटियां हैं, तो वे एक तरह के दिखाए जाते हैं, लेकिन गड़बड़ रूप से। हालाँकि, अगर मैं Windows कुंजी दबाता हूं और बंद कर रहा हूं, r(Metar ) , तो मुझे सिस्टम सेवाओं की सफलता और विफलता देखने को मिलती है, जैसा कि वे होते हैं। तो फिर मुझे पता है कि वास्तव में क्या टूट गया है। यह पता नहीं है कि यह कीबोर्ड शॉर्टकट मेरे कुबंटु सेटअप के लिए विशिष्ट है या नहीं; मैंने इसे नहीं जोड़ा था .. मैं उन लोगों में से एक था जो किसी भी तरह दुर्घटना से मिले थे ...

रीबूट करने के बाद लॉग देखना

जब सिस्टम रिबूट हो जाता है, तो त्रुटि संदेशों को लॉगफ़ाइल में सहेजा जाना चाहिए। कौन सा लॉगफ़ाइल निर्भर करता है कि कौन सी सेवा टूटी हुई / गलत है। प्रासंगिक लॉग लगभग निश्चित रूप से /var/log/(या एक उपनिर्देशिका) में होगा। ls, less, grepऔर findकेवल कार्यक्रमों मैं लॉग में त्रुटि संदेश खोजने के लिए आवश्यक किया है किया गया है ...

एक बार जब आप त्रुटि और उस सेवा का कारण बन जाते हैं, तो आपको नए कॉन्फ़िगरेशन का परीक्षण करने के लिए रीबूट करने की आवश्यकता नहीं है; बस सेवा को पुनः आरंभ करें .. उम्मीद है कि आप एक कमांड के साथ निश्चित कॉन्फ़िगरेशन का परीक्षण कर सकते हैं जैसे:

sudo service <service name> restart


क्या यह विंडोज + आर या ऑल्ट + आर आप दबा रहे हैं? डिफ़ॉल्ट मैपिंग सुपर के लिए विंडोज़ कुंजी और मेटा कुंजी को मैप करती है, इसलिए यह स्पष्ट नहीं है कि आप किस कुंजी का वर्णन कर रहे हैं।
केसी

3

यह देखने के बाद कि bootlogdवास्तव में लॉगिंग करने का प्रबंधन कैसे होता है , यह पता चलता है कि इसे शटडाउन / रिबूट प्रक्रिया के साथ-साथ स्टार्टअप एक में भी लॉग इन करने के लिए राजी किया जा सकता है। bootlogdबूट प्रक्रिया में जल्दी शुरू किया जाता है। इसके बाद यह टर्मिनल से सभी आउटपुट को लॉग करने के लिए कुछ जादू के साथ ttyऔर ptsडिवाइस करता है। इसे बूट प्रक्रिया में बाद में बंद कर दिया जाता है, संभवतः इससे पहले कि यह उपयोगकर्ता द्वारा काम करने वाले आउटपुट को लॉग करना शुरू कर देगा tty

यदि bootlogdशटडाउन / रिबूट प्रक्रिया के दौरान फिर से निकाल दिया जाता है और जो भी फाइल सिस्टम लॉग से पहले बंद कर दिया जाता है, वह अनमाउंट है, तो अगले बूट पर पढ़ने के लिए उपलब्ध शटडाउन प्रक्रिया के अधिकांश का रिकॉर्ड होगा।

bootlogdस्टार्टअप के दौरान दो initस्क्रिप्ट होने के बाद दोनों को बंद किया जा सकता है । एक सामान्य initस्क्रिप्ट है जो प्रक्रिया को सामान्य के रूप में शुरू / रोकती है। दूसरा एक 'उलट' initस्क्रिप्ट है जिसमें जब बुलाया जाता है start, तो यह पहली स्क्रिप्ट को स्टॉप के साथ कहता है। यह 'ट्रिक्स' sysvinitप्रक्रिया है, ऐसा प्रतीत होता है कि यह दो अलग-अलग सेवाओं को शुरू कर रहा है जब यह वास्तव में एक ही सेवा शुरू कर रहा है और रोक रहा है। यह सुनिश्चित करने के लिए आवश्यक है कि सब कुछ सही क्रम में होता है।

बनाने के लिए bootlogdशटडाउन के दौरान चलाने के लिए, क्या आवश्यक है:

  1. bootlogdयदि आप पहले से ही स्थापित नहीं है।
  2. दो init स्क्रिप्ट कॉपी करें
  3. 'उलट' स्क्रिप्ट परिवर्तन को रोकने के लिए शुरू करने के बजाय शुरू करने के लिए रोकें।
  4. एलएसबी हेडर को बदल दें ताकि शटडाउन / रिबूट के दौरान दोनों स्क्रिप्ट सही समय पर चलें
  5. के साथ उन्हें स्थापित करें update-rc.d

यहां कॉपी / पेस्ट bashस्क्रिप्ट के रूप में मेरे परिवर्तन हैं (यदि आप मैन्युअल रूप से परिवर्तन करना चाहते हैं, तो मेरे द्वारा उपयोग किए गए एलएसबी हेडर पैच में हैं):

cd /etc/init.d
cp bootlogd shutdown-bootlogd
cp stop-bootlogd shutdown-start-bootlogd

echo -e 'diff -ur ./shutdown-bootlogd /etc/init.d/shutdown-bootlogd
--- ./shutdown-bootlogd\t2014-02-20 13:59:23.426109512 +0000
+++ /etc/init.d/shutdown-bootlogd\t2014-02-20 11:10:56.238656828 +0000
@@ -1,14 +1,13 @@
 #! /bin/sh
-### BEGIN INIT INFO
-# Provides:          bootlogd
-# Required-Start:    mountdevsubfs
-# X-Start-Before:    hostname keymap keyboard-setup procps pcmcia hwclock hwclockfirst hdparm hibernate-cleanup lvm2
-# Required-Stop:
-# Default-Start:     S
-# Default-Stop:
-# Short-Description: Start or stop bootlogd.
-# Description:       Starts or stops the bootlogd log program
-#                    which logs boot messages.
+### BEGIN INIT INFO 
+# Provides:          shutdown-bootlogd 
+# Required-Start:
+# Required-Stop:     umountroot halt reboot 
+# Default-Start:      
+# Default-Stop:      0 6 
+# X-Stop-After:      umountfs 
+# Short-Description: Stop bootlogd at shutdown. 
+# Description: 
 ### END INIT INFO

 PATH=/sbin:/bin  # No remote fs at start
diff -ur ./shutdown-start-bootlogd /etc/init.d/shutdown-start-bootlogd
--- ./shutdown-start-bootlogd\t2014-02-20 13:59:23.430107513 +0000
+++ /etc/init.d/shutdown-start-bootlogd\t2014-02-20 11:10:56.238656828 +0000
@@ -1,24 +1,24 @@
 #! /bin/sh
 ### BEGIN INIT INFO
-# Provides:          stop-bootlogd
-# Required-Start:    $local_fs $all
-# Required-Stop:
-# Default-Start:     2 3 4 5
-# Default-Stop:
-# Short-Description: Stop bootlogd
-# Description:       See the init.d/bootlogd script
+# Provides:          shutdown-start-bootlogd
+# Required-Start:
+# Required-Stop:     $local_fs $all
+# Default-Start:
+# Default-Stop:      0 6
+# Short-Description: Start or stop bootlogd at shutdown.
+# Description:
 ### END INIT INFO

-NAME=stop-bootlogd
+NAME=shutdown-start-bootlogd
 DAEMON=/sbin/bootlogd

 [ -x "$DAEMON" ] || exit 0

 case "$1" in
-  start)
-\t/etc/init.d/bootlogd stop
+  stop)
+\t/etc/init.d/bootlogd start
 \t;;
-  stop|restart|force-reload)
+  start|restart|force-reload)
 \t# No-op
 \t;;
   status)
' | patch

update-rc.d shutdown-bootlogd defaults
update-rc.d shutdown-start-bootlogd defaults

bootlogdबंद होने से पहले दिखाई देने वाले सभी संदेशों को संग्रहीत किया जाएगा /var/log/bootbootlogdपाठ धारा से भागने के वर्ण हटाता है। निम्न ( bash) कमांड रंग में लॉग प्रदर्शित करेगा, क्योंकि यह शटडाउन के दौरान दिखाई देता है:

sed $'s/\^\[/\E/g;s/\[1G\[/\[27G\[/' /var/log/boot | less -r

इस बारे में अधिक जानकारी के लिए यह प्रश्न देखें - /programming/10757823/display-file-with-escaped-color-codes-boot-messages-from-bootlog-daemon/19011140

स्क्रिप्ट को आगे संपादित करके लॉग का स्थान बदला जा सकता है। दुर्भाग्य से फ़ाइल के हर उपस्थिति परिवर्तित किया जाना चाहिए (यह भी, की जगह /ver/log/bootपर्याप्त नहीं स्क्रिप्ट एक करता है के रूप में है cdके लिए /var/logएक बिंदु पर)।

यदि /var/logरूटफुट पर है तो उपरोक्त भी काम करेगा । कि नहीं निर्भरता तो फिर से काम करने की आवश्यकता है, तो umountfsबाद किया जाता है bootlogdबंद कर दिया है। या फिर रूटफुट पर एक फ़ाइल में लॉग इन करें।


1

आपको सभी /etc/rc6.d/* फ़ाइलों को संपादित करना होगा और उनके आउटपुट को कुछ फ़ाइल पर पुनर्निर्देशित करना होगा, जिसे आप बाद में पढ़ सकते हैं।

यह पुनर्निर्देशन, आपको यह भी बताएगा कि कौन सा कार्यक्रम failedऔर why

इसके अतिरिक्त, आपको उन सभी फ़ाइलों में पैरामीटर start-stop-daemonको हटाकर --quietऔर -vपैरामीटर जोड़कर संशोधित करना होगा ।

यदि आप ऐसा कर रहे हैं, तो सुनिश्चित करें, आप अपने द्वारा किए गए सभी परिवर्तनों को रोलबैक करेंगे। बदलाव करने से पहले मौजूदा फाइलों का बैकअप लेना अच्छा रहेगा।


ठीक। यह मुझसे बहुत काम लेगा। मै कोशिश करुॅगा। धन्यवाद।
Sigur

इसके बाद परिणाम मुझे बताएं
SHW

संपादन /etc/init.d( /etc/rc?.dयहाँ लिंक में सब कुछ ) कुछ भी नहीं करेगा। आउटपुट प्रत्यक्ष नहीं है, यह फ़ंक्शन /lib/lsb/init-functionsऔर अन्य फ़ाइलों के माध्यम से है जो इसे बारी स्रोतों में करते हैं। आप इन्हें संपादित कर सकते हैं, कुछ उन्नयन हालांकि परिवर्तनों को स्पष्ट करेंगे।
ग्रीम

एकमात्र फ़ंक्शन या बाइनरी जो प्रासंगिक है, start-stop-daemonओपीस पीओवी से है। अब उनके जवाब का इंतज़ार है
SHW

@SHW Nope, स्क्रिप्ट देखें। अधिकांश आउटपुट स्क्रिप्ट के अन्य भागों से आता है। मुझे नहीं लगता कि start-stop-daemonकोई भी उत्पादन होता है, कम से कम सामान्य रूप से नहीं। स्क्रिप्ट का उपयोग कर अपनी वापसी के उत्पादन के आधार पर ठीक / असफल उत्पादन उत्पन्न करते हैं log_end_msg। देख लो /lib/lsb/init-functions.d/20-left-info-blocks
ग्रीम

0

/var/log/messagesआपको आवश्यक डेटा देगा। यदि यह आपके लिए पर्याप्त नहीं है, तो /etc/syslog.confसभी डेटा लॉग करने के लिए संशोधित करें (मैं कर्नेल त्रुटियों को लॉग करने में सक्षम होना चाहूंगा, उर्फ ​​* कर्नेल), लेकिन रिबूट के बाद आपको यह वापस नहीं मिलेगा, या यह लॉग्स के लिए बहुत सारे स्थान खा जाएगा।


नहीं है /etc/syslog.conf। ही हैं sysctl.conf sysctl.d/ systemd/
सिगुर

1
try /etc/rsyslog.conf
kaboom

0

मेरे लैपटॉप के sudo haltलिए सॉफ्टवेयर शटडाउन करेगा हार्डवेयर नहीं। यानी स्क्रीन और अन्य हार्डवेयर चालू रहते हैं। स्क्रीन में आखिरी मैसेज होगा

प्रणाली थम जाना

इस बिंदु पर मैं सिर्फ पावर बटन दबाता हूं और सब कुछ बंद हो जाता है। आप यह कोशिश कर सकते हैं। आप भी आजमा सकते हैंsudo halt --verbose


इसलिए मुझे लगता है कि यह पूरी तरह से सुरक्षित है। हार्डवेयर को कोई नुकसान नहीं ?!
Sigur

0

जैसे ग्रीम ने कहा कि आरओ या विघटित फाइलसिस्टम के साथ, मारे गए क्लॉग को ऐसी जानकारी किसी फाइल में लिखने का कोई तरीका नहीं है। एक समाधान एक कंसोल (सीरियल पोर्ट) का उपयोग कर सकता है, जो कि बूटगर्ज़ में परिभाषित है। बस नल मॉडेम केबल और एक अन्य पीसी (टैबलेट या स्मार्टफोन उपयुक्त एडाप्टर के साथ) और टर्मिनल एमुलेटर से कनेक्ट करें।


-1

त्रुटि (और अन्य) संदेश आमतौर पर plymouthसौंदर्य कारणों से छिपे होते हैं ।

शायद यह मदद करता है: यदि आप शट डाउन के दौरान ईएससी को मारते हैं, plymouthतो ग्राफिकल कंसोल को दिखाता है। क्या यह आपको उपयोगी संदेश दिखाता है?

इसके अलावा, बहुत कम आप ऐसा कर सकते हैं यदि मशीन वास्तव में दुर्घटनाग्रस्त हो जाती है क्योंकि यह लॉग फ़ाइल को लिखने में सक्षम नहीं हो सकता है - चाहे वह बफर हो, या /var/logपहले से ही केवल पढ़ने योग्य है, यह निर्भर करता है कि दुर्घटना कब होती है। आप इन फ़ाइलों को निष्पादित ls -ltr /var/logकरके देख सकते हैं कि क्या कोई लॉग फ़ाइल है जो आपकी शटडाउन तिथि (या नए) से मेल खाती है।

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