Sonrasında kapatma mesajları nasıl okunur?


18

Lubuntu 11.10 kullanıyorum. Her kapattığımda FAIL'i kırmızı harflerle okuyabilirim, ancak daha fazlasını okuyamıyorum.

Peki, günlük mesajlarını nasıl okuyabilir ve sorunu çözmeye çalışacağız?


Askubuntu'daki bu cevaba bir göz atın . Sorununuzda size yardımcı olabilir.
solde9

her şey kaydedildi /var/log/syslogve /var/log/messages, Bu yüzden onları okumak ve sorun giderme gerekir. Ne zaman io redirectionile error redirectionkullanabilirsinizshutdown command
PersianGulf

Yanıtlar:


14

Bu verileri bir dosyaya kaydetmenin bir yolu yok gibi görünüyor. Önyükleme işlemi için, bootlogddosyayı oluşturan paket vardır /var/log/boot, ancak kapatma / yeniden başlatma işlemi için hiçbir şey yoktur. Görebildiğim kadarıyla, oturum açmanın bir yolu yok rsyslogve olsa bile rsyslog, durdurulduktan sonra yazdırılan mesajlar var . Kapatma / yeniden başlatma işlemimin bir parçası, rootfs'leri salt okunur olarak yeniden takmak ve diğer her şeyi takmaktır, bir sonraki önyüklemede hala orada olacak bir dosyaya giriş yapmanın neredeyse imkansız olması.

İletileri görüntülemenin en kolay yolu, /etc/init.d/haltve / veya /etc/init.d/rebootkomut dosyalarını gerçek halt/ öğesinden hemen önce duraklatmaktır reboot. İçin haltkomut, komutunu çalıştırın sudoedit /etc/init.d/halt(ya bir GUI editörü kullanın) gerçek halt yapar hat için ve göz. Benim için bu çizgi:

halt -d -f $netdown $poweroff $hddown

Aksi takdirde, do_stopfonksiyonun sonunda ve haltkomutu çağıran tek satır olmalıdır . Çizgiyi bulduktan sonra, aşağıdakilere yeni bir satır ekleyin:

read -p "Press enter to halt" reply

Dosyayı kaydet ve çık. Şimdi kapattığınızda, sistem enter tuşuna basana kadar (veya CTRL-C, CTRL-D vb.) Duracaktır. Ekranda yazdırılan mesajları okuyabilirsiniz. Tek bir ekrandan daha fazla metin varsa, tuşuna basarak terminal kaydırma özelliğini görebilirsiniz Shift+PgUp. Bu hala yeterli değilse, geri kaydırma arabelleğinin boyutunu artırmanın yolları vardır (belki de farklı bir soru olsa da).

Sistem yeniden başlatıldığında da aynısını yapmak için /etc/init.d/rebootdosyayı düzenlemeniz gerekir . Burada kullanılan komut elbette işlevin rebootaksine haltve yine do_stopfonksiyonun sonunda olmalıdır . Benim için satır:

reboot -d -f -i

Tekrar aşağıdakileri yukarıdaki yeni bir satıra ekleyin:

read -p "Press enter to reboot" reply

Ayrıca bu dosyaların initscriptspaket için conffiles olarak listelendiğini unutmayın . Bu düzenlemeler, paketler yükseltildiğinde varsayılan olarak hızlandırılmaz, ancak bir çakışmaya neden olurlar.


Daha eksiksiz bir çözüm, aşağıdaki komut dosyasını kullanmak olacaktır:

#! /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

Bu yerleştirilmeli /etc/init.d/pause_hookve aşağıdaki komutla kapatma / yeniden başlatma sırasında çalışacak şekilde etkinleştirilmelidir:

sudo update-rc.d pause_hook defaults

Ardından asıl kancayı etkinleştirmek /etc/pause_hook.confiçin satırı içeren dosyaları oluşturun:

PAUSE_HOOK_ENABLED=true

Kapatma / yeniden başlatma işlemi şimdi haltveya rebootkomut dosyası çağrılmadan hemen önce duraklatılarak iletileri görüntülemeye zaman vermelidir . Ayrıca, etkinleştirme satırını yorumlayarak / kaldırarak kolayca devre dışı bırakılabilir / yeniden etkinleştirilebilir /etc/pause_hook.conf. dpkgYükseltmeler sırasında bu şekilde hiçbir çakışma olmayacaktır .


Oldukça hoş bir çözüm, özellikle init betiği.
Mikhail Morfikov

4

En kolay çözüm fotoğraf yerine video çekmeyi denemek olabilir. Daha sonra kare kare ilerleyebilirsiniz.


2
Kaydedilen bu mesajlarla hiçbir dosya olduğuna inanamıyorum !!! Video ile kayıt yapmaya çalışacağım.
Sigur

7
Bu mesajların bazıları dosya sistemleri kaldırıldıktan sonra yazdırılır! Yani hepsi bir dosyaya ulaşamaz.
Jim Paris

4

Günlüğü gerçek zamanlı olarak görme

Kapatma sırasında genellikle bir Ubuntu logosu ve kapatma işleminin bir günlüğü yerine gösterilen yanıp sönen ışıklar olduğunu gördüm. Hatalar varsa, bunlar bir şekilde gösterilir, ancak dağınıktır. Ancak, kapanırken, Windows tuşuna ve r( Metar) tuşuna basarsam, sistem servislerinin başarılı ve başarısız olduklarını görüyorum. Böylece tam olarak neyin kırıldığını biliyorum. Bu klavye kısayolunun Kubuntu kurulumuma özel olup olmadığı hakkında bir fikrim yok; Eklemedim .. Bir şekilde kazara bulduğumlardan biri, bir şekilde ...

Yeniden başlattıktan sonra günlükleri görüntüleme

Sistem yeniden başlatıldığında, hata mesajları bir günlük dosyasına kaydedilmelidir. Hangi günlük dosyası, hangi hizmetin bozuk / yanlış yapılandırıldığına bağlıdır. İlgili günlük neredeyse kesinlikle /var/log/(veya alt dizininde) olacaktır. ls,less , grepVe findben günlüklerinde hata iletileri bulmak için gerekli ettik sadece programları olmuştur ...

Hatayı ve buna neden olan hizmeti bulduğunuzda, yeni yapılandırmayı test etmek için yeniden başlatmanız gerekmez; sadece hizmeti yeniden başlatın .. Umarım sabit yapılandırmayı aşağıdaki gibi bir komutla test edebilirsiniz:

sudo service <service name> restart


Bastığınız Windows + r veya Alt + r mi? Varsayılan eşlemeler, windows anahtarını super ve meta anahtarını alt olarak eşler, böylece tam olarak hangi anahtarı açıkladığınız net değildir.
casey

3

bootlogdGünlüğe kaydetmeyi gerçekten nasıl başardığını inceledikten sonra , kapatma / yeniden başlatma işleminin yanı sıra başlangıç ​​işlemini günlüğe kaydetmenin ikna edilebileceği ortaya çıkıyor. bootlogdönyükleme işleminin başında başlatılır. Ardından , bağlı olduğu terminale tüm çıkışları kaydetmek için bazı sihir ttyve ptscihazlar yapar. Daha sonra, önyükleme işleminde daha sonra, muhtemelen üzerinde çalışan bir kullanıcının çıktısını günlüğe kaydetmeye başlamadan önce durdurulur tty.

Eğer bootlogdis kapatma / yeniden başlatma işlemi sırasında tekrar ateş ve günlük çıkarılmadan içeren hangisi dosya sistemi önce durdu, sonraki açılışta okunabilecek kapatma sürecinin en rekor olacak.

bootlogdiki initkomut dosyası ile başlatma sırasında hem başlatılmasını hem de durdurulmasını sağlar . Bunlardan biri, işlemi normal initşekilde başlatan / durduran normal bir komut dosyasıdır. Diğeri, initçağrıldığında start, ilk komut dosyasını durdurma ile çağırdığı için 'ters' bir komut dosyasıdır. Bu işlemi 'hileler' sysvinit, aynı hizmeti gerçekten başlatıp durduğunda iki ayrı hizmet başlatıyor gibi görünüyor. Her şeyin doğru sırada olduğundan emin olmak için buna ihtiyaç vardır.

Yapmak için bootlogdkapatma sırasında çalıştırmak gereklidir şudur:

  1. bootlogdHenüz yapmadıysanız yükleyin .
  2. İki başlangıç ​​komut dosyasını kopyalayın
  3. Durdurmak yerine 'tersine çevrilmiş' komut dosyası değişikliğini başlatmak için durdurun.
  4. LSB başlıklarını, kapatma / yeniden başlatma sırasında her iki komut dosyasının da doğru zamanda çalışacak şekilde değiştirin
  5. İle yükleyin update-rc.d.

Kopyalama / yapıştırma bashkomut dosyası olarak yaptığım değişiklikler (değişiklikleri el ile yapmak istiyorsanız, kullandığım LSB başlıkları düzeltme ekinde):

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

Daha önce bootlogddurdurulmuş olarak görünen tüm mesajlar içinde saklanacaktır /var/log/boot. bootlogdçıkış karakterlerini metin akışından kaldırır. Aşağıdaki ( bash) komutu, kapatma sırasında göründüğü gibi oturum açma rengini görüntüler:

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

Bununla ilgili daha fazla ayrıntı için bu soruya bakın - /programming/10757823/display-file-with-escaped-color-codes-boot-messages-from-bootlog-daemon/19011140

Günlüğün konumu, komut dosyaları daha fazla düzenlenerek değiştirilebilir. Maalesef dosyanın her görünüm değiştirilmesi gerekir (ayrıca değiştirilmesi /ver/log/bootyeterli komut dosyası yaptığı gibi olduğu cdiçin/var/log bir noktada).

Yukarıdakiler de yalnızca /var/logroot dosyalarındaysa çalışır. Değilse bağımlılıkların yeniden işlenmesi gerekir, böylece umountfssonra bootlogddurdurulur. Veya rootfs'deki bir dosyaya oturum açın.


1

Tüm /etc/rc6.d/* dosyalarını düzenlemeniz ve çıktılarını daha sonra okuyabileceğiniz bir dosyaya yönlendirmeniz gerekir.

Bu yönlendirme, size, hangi program failedve why.

Ayrıca, tüm bu dosyalara parametresini start-stop-daemonkaldırarak --quietve -vparametre ekleyerek değiştirmeniz gerekir .

Bunu yapıyorsanız, yaptığınız tüm değişiklikleri geri alacağınızdan emin olun. Değişiklik yapmadan önce mevcut dosyaları yedeklemek iyi bir fikir olacaktır.


TAMAM. Bu benden çok iş alacak. Deneyeceğim. Teşekkürler.
Sigur

Sonucu bana haber ver
SHW

/etc/init.d( /etc/rc?.dBuraya bağlantılardaki her şey) içindeki yazıların düzenlenmesi hiçbir şey yapmaz. Çıktı doğrudan değildir, /lib/lsb/init-functionssırayla kaynaklardaki işlevler ve diğer dosyalar aracılığıyla olur . Bunları düzenleyebilirsiniz, bazı yükseltmeler değişiklikleri değiştirebilir.
Graeme

İlgili tek işlev veya ikili, start-stop-daemonOPs PoV'den alınmıştır. Şimdi cevabını bekliyorum
SHW

@ SHH Hayır, senaryolara bak. Çıktının çoğu betiğin diğer bölümlerinden gelir. start-stop-daemonEn azından normalde herhangi bir çıktı üretmediğini düşünmüyorum . Komut dosyaları, kullanarak dönüş çıktısına göre ok / fail çıktısı üretir log_end_msg. Bkz /lib/lsb/init-functions.d/20-left-info-blocks.
Graeme

0

/var/log/messagessize ihtiyacınız olan verileri verecektir. sizin için yeterli değilse, /etc/syslog.conftüm verileri günlüğe kaydetmek için değişiklik yapın (çekirdek hatalarının günlüğe kaydedilmesini etkinleştirmek isterim, aka * kern) ama yeniden başlattıktan sonra GERİ DÖN


Yok /etc/syslog.conf. Sadece vardır sysctl.conf sysctl.d/ systemd/.
Sigur

1
try /etc/rsyslog.conf
kaboom

0

Benim laptop sudo haltiçin donanım değil yazılım kapatma yapacak. ekran ve diğer donanımlar çalışmaya devam eder. Ekrandaki son mesaj

Sistem durdu

Bu noktada sadece Güç düğmesine basıyorum ve her şey kapalı. Bunu deneyebilirsiniz. Ayrıca deneyebilirsinizsudo halt --verbose


Sanırım bu tamamen güvenli bir süreç. Donanıma zarar vermez mi ?!
Sigur

0

Graeme'nin dediği gibi, ro veya sökülmüş dosya sistemi ile öldürülen klogd ile bu bilgileri bir dosyaya yazmanın bir yolu yoktur. Bir çözüm, bootargs olarak tanımlanan bir konsol (seri bağlantı noktası) kullanıyor olabilir. Boş modem kablosunu ve başka bir PC'yi (uygun adaptörlü tablet veya akıllı telefon) ve terminal emülatörünü bağlamanız yeterlidir.


-1

Hata (ve diğer) mesajlar genellikle plymouthestetik nedenlerle gizlenir .

Belki de bu yardımcı olur: Kapatma sırasında ESC'ye basarsanız, plymouthgrafik konsolu gösterir. Bu size faydalı mesajlar gösteriyor mu?

Bunun dışında, makinenin gerçekten çökmesi durumunda yapabileceğiniz çok az şey vardır, çünkü günlük dosyasını yazamayabilir - çökmenin /var/loggerçekleştiği zamana bağlı olarak arabelleğe alınmış veya zaten salt okunur olarak yeniden yüklenmiş olsun. ls -ltr /var/logKapatma tarihinizle (veya daha yenisiyle) eşleşen bir günlük dosyası olup olmadığını çalıştırarak ve bu dosyalara göz atabilirsiniz .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.