나중에 종료 메시지를 읽는 방법은 무엇입니까?


18

Lubuntu 11.10을 사용하고 있습니다. 종료 할 때마다 빨간색 문자로 FAIL을 읽을 수 있지만 더 읽을 수는 없습니다.

그렇다면 로그 메시지를 읽고 문제를 해결하는 방법은 무엇입니까?


askubuntu 에서이 답변 을 살펴보십시오. 문제 해결에 도움이 될 수 있습니다.
solde9

모든에 간격의 저장 /var/log/syslog하고 /var/log/messages당신이 그들과 throubleshoot을 읽을 필요가 그래서. 당신은 사용할 수 io redirection와 함께 error redirection사용할 때shutdown command
페르시아 만

답변:


14

이 데이터를 파일에 기록 할 방법이없는 것 같습니다. 부팅 프로세스 bootlogd에는 파일을 생성하는 패키지가 /var/log/boot있지만 종료 / 재부팅 프로세스에는 없습니다. 내가 볼 수있는 한 로그인 할 수있는 방법이 없습니다rsyslog 한, ,있는 경우에도 rsyslog중지 후 인쇄 된 메시지 가 있습니다. 종료 / 재부팅 프로세스의 일부는 rootfs를 읽기 전용으로 다시 마운트하고 다른 모든 부트를 마운트 해제하는 것입니다. 다음 부팅시 여전히 존재하는 파일에 로깅 한 후에는 사실상 불가능합니다.

메시지를 보는 가장 쉬운 방법 은 실제 / 바로 전에 일시 중지하도록 스크립트 /etc/init.d/halt및 / 또는 /etc/init.d/reboot스크립트를 편집하는 것 입니다. 의 경우 스크립트 명령을 실행 (또는 GUI 편집기 사용) 실제 정지를 수행하는 라인과 모양을. 나를 위해 이것은 라인입니다 :haltreboothaltsudoedit /etc/init.d/halt

halt -d -f $netdown $poweroff $hddown

그렇지 않으면 do_stop함수 의 끝 과 halt명령 을 호출하는 유일한 행에 있어야합니다 . 줄을 찾으면 다음과 같이 새 줄을 삽입하십시오.

read -p "Press enter to halt" reply

파일을 저장하고 종료하십시오. 이제 종료하면 Enter 키 (또는 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

이러한 파일은 initscripts패키지의 conffile로 나열됩니다 . 이러한 수정 사항은 패키지를 업그레이드 할 때 충돌을 일으키지 만 기본적으로 방해받지 않습니다.


보다 완벽한 해결책은 다음 스크립트를 사용하는 것입니다.

#! /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.conf. dpkg이 방법으로 업그레이드하는 동안 conffile 충돌 도 없습니다 .


아주 좋은 해결책, 특히 init 스크립트.
Mikhail Morfikov

4

가장 쉬운 해결책은 사진 대신 비디오를 찍는 것입니다. 나중에 프레임별로 단계별로 살펴볼 수 있습니다.


2
녹음 된 메시지가있는 파일이 없다고 믿을 수 없습니다 !!! 비디오로 녹화하려고합니다.
Sigur

7
이러한 메시지 중 일부는 파일 시스템을 마운트 해제 한 후에 인쇄됩니다! 그래서 그들은 모두 파일로 끝날 수는 없습니다.
Jim Paris

4

실시간으로 로그보기

종료하는 동안 일반적으로 종료 프로세스 로그 대신 표시되는 Ubuntu 로고와 깜박이는 표시등이있는 것으로 나타났습니다. 오류가 있으면 표시되지만 지저분합니다. 그러나 종료하는 동안 Windows 키와 r( Metar)를 누르면 시스템 서비스의 성공 및 실패가 발생하는 것을 볼 수 있습니다. 그래서 나는 정확히 무엇이 깨 졌는지 압니다. 이 키보드 단축키가 쿠분투 설정에만 해당되는지, 아니면 무엇인지 모릅니다. 추가하지 않았습니다. 우연히 발견 한 것 중 하나입니다.

재부팅 후 로그보기

시스템이 재부팅되면 오류 메시지가 로그 파일에 저장되어야합니다. 어떤 로그 파일은 어떤 서비스가 고장 나거나 잘못 구성되어 있는지에 따라 다릅니다. 관련 로그는 거의 확실하게 /var/log/(또는 그 서브 디렉토리에) 있습니다. ls, less, grepfind 내가 로그에 오류 메시지를 찾기 위해 필요한 한 프로그램 만했습니다 ...

오류와 오류를 일으킨 서비스를 발견하면 새 구성을 테스트하기 위해 재부팅 할 필요가 없습니다. 서비스를 다시 시작하면됩니다. 다음과 같은 명령으로 고정 구성을 테스트 할 수 있습니다.

sudo service <service name> restart


누르는 것이 Windows + r 또는 Alt + r입니까? 기본 매핑은 windows 키를 super에 매핑하고 메타 키를 alt에 매핑하여 어떤 키를 설명하는지 정확히 알 수 없습니다.
casey

3

bootlogd실제로 로깅을 관리 하는 방법을 조사한 후 시스템 종료 / 재부팅 프로세스와 시작 프로세스를 로그하도록 설득 할 수 있음을 알 수 있습니다. bootlogd부팅 프로세스 초기에 시작됩니다. 그런 다음 연결된 장치에 모든 출력을 기록하기 위해 장치 tty및 일부 마법을 수행 pts합니다. 그런 다음 부팅 프로세스에서 나중에 중지 될 것입니다.tty .

경우 bootlogdIS는 종료 / 재부팅 과정에서 다시 해고 로그가 마운트 해제 포함하는 중 파일 시스템 전에 중지, 다음 부팅시 읽을 수 종료 프로세스의 대부분의 기록이있을 것이다.

bootlogd시작하는 동안 두 개의 init스크립트 를 사용하여 시작 및 중지되도록 관리합니다 . 하나는 init프로세스를 정상적으로 시작 / 중지 하는 일반 스크립트입니다. 다른 하나는로 init호출 할 때 start중지 된 첫 번째 스크립트를 호출 한다는 점에서 '역순' 스크립트입니다 . 이 '트릭'sysvinit 프로세스를 , 실제로 동일한 서비스를 시작하고 중지 할 때 두 개의 개별 서비스를 시작하는 것으로 보입니다. 모든 것이 올바른 순서로 발생하는지 확인하는 데 필요합니다.

bootlogd종료 중에 실행 하려면 다음이 필요합니다.

  1. bootlogd아직 설치 하지 않았다면 설치 하십시오.
  2. 두 개의 init 스크립트를 복사하십시오
  3. '역전 된'스크립트 변경을 중지 시작 대신 시작 중지로 설정하십시오.
  4. LSB 헤더를 변경하여 종료 / 재부팅시 두 스크립트 모두 적절한 시간에 실행되도록
  5. 로 설치하십시오 update-rc.d.

복사 / 붙여 넣기 bash스크립트 로 변경 한 내용은 다음과 같습니다 (수동으로 변경하려는 경우 사용한 LSB 헤더가 패치에 있음).

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/boot. bootlogd텍스트 스트림에서 이스케이프 문자를 제거합니다. 다음 ( bash) 명령은 종료 중에 나타나는대로 로그를 컬러로 표시합니다.

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

이에 대한 자세한 내용은이 질문을 참조하십시오 -https : //.com/questions/10757823/display-file-with-escaped-color-codes-boot-messages-from-bootlog-daemon/19011140

스크립트를 추가로 편집하여 로그 위치를 변경할 수 있습니다. 불행하게도 파일의 모든 모양을 변경해야합니다 (또한, 교체하는 것은 /ver/log/boot충분하지 스크립트가 작업을 수행 같습니다 cd/var/log한 지점에서).

위의 내용은 /var/logrootfs에있는 경우에만 작동합니다 . 그렇지 않으면 종속성이 재 작업되어야하므로 중지 된 umountfs후에 수행됩니다 bootlogd. 또는 rootfs의 파일에 기록하십시오.


1

모든 /etc/rc6.d/* 파일을 편집하고 출력을 일부 파일로 리디렉션하면 나중에 읽을 수 있습니다.

이 리디렉션은 또한, 어떤 프로그램이 당신을 말할 것이다 failedwhy.

또한 모든 파일에서 매개 변수 start-stop-daemon를 제거하고 --quiet매개 변수를 추가하여 를 수정해야 -v합니다.

그렇게하는 경우 모든 변경 사항을 롤백해야합니다. 변경하기 전에 기존 파일을 백업하는 것이 좋습니다.


확인. 이것은 나로부터 많은 작업을 필요로한다. 노력하겠습니다. 감사.
Sigur

결과를 알려주세요
SHW

sripts를 편집하면 /etc/init.d( /etc/rc?.d여기 에 링크 된 모든 것) 아무 작업도 수행되지 않습니다. 출력은 직접적이지 않으며, /lib/lsb/init-functions소스 의 기능 및 기타 파일을 통해 이루어 집니다. 당신은 이것들을 편집 할 수 있습니다. 일부 업그레이드는 변경 사항을 방해합니다.
Graeme

관련된 유일한 기능 또는 이진 start-stop-daemon은 OPs PoV에서 온 것입니다. 지금 그의 답변을 기다리는 중
SHW

@SHW 아니요, 스크립트를보십시오. 출력의 대부분은 스크립트의 다른 부분에서 나옵니다. start-stop-daemon적어도 정상적으로 출력을 생성 하지는 않는다고 생각 합니다. 이 스크립트는를 사용하여 반환 출력을 기반으로 ok / fail 출력을 생성 log_end_msg합니다. 참조하십시오 /lib/lsb/init-functions.d/20-left-info-blocks.
Graeme

0

/var/log/messages필요한 데이터를 제공합니다. 당신을 위해 충분하지의 경우, 수정 /etc/syslog.conf된 모든 데이터를 기록 (I는 로그인 커널 오류를 활성화하는 일명 * 커닝을 보일 것이다) 그러나 REVERT IT BACK 후 재부팅, 또는 로그를위한 공간을 많이 먹을 것이다


없습니다 /etc/syslog.conf. 있습니다 sysctl.conf sysctl.d/ systemd/.
Sigur

1
시도 /etc/rsyslog.conf
kaboom

0

내 랩탑의 sudo halt경우 하드웨어가 아닌 소프트웨어 종료를 수행합니다. 즉, 화면 및 기타 하드웨어가 계속 실행 중입니다. 화면의 마지막 메시지는

시스템 정지

이제 전원 버튼을 누르면 모든 것이 꺼집니다. 당신은 이것을 시도 할 수 있습니다. 시도해 볼 수도 있습니다sudo halt --verbose


그래서 이것은 완전히 안전한 절차라고 생각합니다. 하드웨어에 손상이 없습니까?!
Sigur

0

Graeme이 말했듯이 ro 또는 마운트 해제 된 파일 시스템으로 klogd를 종료하면 해당 정보를 파일에 쓸 수있는 방법이 없습니다. 솔루션은 bootargs에 정의 된 콘솔 (직렬 포트)을 사용 중일 수 있습니다. 널 모뎀 케이블과 다른 PC (적절한 어댑터가있는 태블릿 또는 스마트 폰)와 터미널 에뮬레이터를 연결하기 만하면됩니다.


-1

오류 (및 기타) 메시지는 일반적으로 plymouth미학적 이유로 숨겨져 있습니다.

종료시 ESC 키를 누르면 plymouth그래픽 콘솔이 표시됩니다. 유용한 메시지가 표시됩니까?

그 외에도, 충돌이 발생한 시점에 따라 로그 파일을 버퍼링 할 수 있는지 또는 /var/log이미 읽기 전용으로 다시 마운트 했는지에 관계없이 로그 파일을 쓸 수 없기 때문에 시스템이 실제로 충돌하는 경우 수행 할 수있는 작업이 거의 없습니다 . ls -ltr /var/log종료 날짜 (또는 최신)와 일치하는 로그 파일이 있는지 확인 하고 실행하여 이러한 파일을 살펴볼 수 있습니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.