나중에 종료 메시지를 어떻게 읽을 수 있나요?

나중에 종료 메시지를 어떻게 읽을 수 있나요?

저는 루분투 11.10을 사용하고 있습니다. 닫을 때마다 빨간색 글꼴로 "FAIL"이 표시되지만 더 이상 읽을 수 없습니다.

그렇다면 로그 메시지를 어떻게 읽고 문제를 해결하려고 할까요?

답변1

이 데이터를 파일에 기록할 수 있는 방법은 없는 것 같습니다. 시작 프로세스에는 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 등)를 누를 때까지 시스템이 일시 중지됩니다. 화면에 인쇄된 메시지를 읽을 수 있습니다. 텍스트가 한 화면을 초과하는 경우 View Terminal 을 눌러 뒤로 스크롤할 수 있습니다 Shift+PgUp. 그래도 충분하지 않다면 스크롤백 버퍼 크기를 늘리는 방법이 있습니다(다른 질문일 수도 있음).

시스템이 다시 시작될 때 동일한 작업을 수행하려면 파일을 편집해야 합니다 /etc/init.d/reboot. 여기에 사용된 명령은 물론 reboot함수의 반대 halt이므로 다시 함수의 끝에 있어야 합니다 do_stop. 나에게 이 줄은 다음과 같다:

reboot -d -f -i

위의 새 줄에 다음을 다시 삽입합니다.

read -p "Press enter to reboot" reply

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.conf. dpkg이 방법으로 업그레이드하는 동안 구성 파일 충돌도 발생하지 않습니다.

답변2

가장 쉬운 해결책은 사진 대신 동영상을 찍어보는 것일 수도 있습니다. 나중에 프레임별로 살펴볼 수 있습니다.

답변3

실시간으로 로그 보기

종료하는 동안 종료 프로세스 로그를 표시하는 대신 Ubuntu 로고와 깜박이는 표시등이 표시되는 경우가 많습니다. 오류가 있으면 표시되지만 혼란스럽습니다. 하지만 종료하는 동안 Windows 키와 r( ) 를 누르면 Metar시스템 서비스의 성공과 실패가 발생하는 대로 확인할 수 있습니다. 이렇게 하면 무엇이 손상되었는지 정확히 알 수 있습니다. 이 키보드 단축키가 내 쿠분투 설정에만 적용되는 것인지, 아니면 내가 추가하지 않은 것인지 잘 모르겠습니다. 그 중 하나를 우연히 발견했습니다.

재시작 후 로그 확인

시스템이 다시 시작되면 오류 메시지가 로그 파일에 저장되어야 합니다. 어떤 로그 파일은 어떤 서비스가 손상되었거나 잘못 구성되었는지에 따라 달라집니다. 관련 로그는 거의 확실하게 /var/log/해당 위치(또는 그 하위 디렉터리)에 있습니다. ls, lessgrepfind로그에서 오류 메시지를 찾는 데 필요한 유일한 프로그램입니다...

오류와 오류를 일으킨 서비스를 찾은 후에는 새 구성을 테스트하기 위해 다시 시작할 필요가 없습니다. 다음을 사용하여 고정된 구성을 테스트할 수 있기를 바랍니다.

sudo service <service name> restart

답변4

내 노트북의 경우 sudo halt하드웨어 종료 대신 소프트웨어 종료가 수행됩니다. 즉, 화면과 기타 하드웨어는 계속 실행됩니다. 화면의 마지막 메시지는 다음과 같습니다.

시스템이 중지되었습니다.

이 시점에서 버튼을 누르기만 하면 됩니다.전원 버튼모든 것이 닫혀 있습니다. 이것을 시도해 볼 수 있습니다. 당신은 또한 시도할 수 있습니다sudo halt --verbose

관련 정보