Lubuntu 11.10을 사용하고 있습니다. 종료 할 때마다 빨간색 문자로 FAIL을 읽을 수 있지만 더 읽을 수는 없습니다.
그렇다면 로그 메시지를 읽고 문제를 해결하는 방법은 무엇입니까?
답변
이 데이터를 파일에 기록 할 방법이없는 것 같습니다. 부팅 프로세스 bootlogd
에는 파일을 생성하는 패키지가 /var/log/boot
있지만 종료 / 재부팅 프로세스에는 없습니다. 내가 볼 수있는 한 로그인 할 수있는 방법이 없습니다rsyslog
한, ,있는 경우에도 rsyslog
중지 후 인쇄 된 메시지 가 있습니다. 종료 / 재부팅 프로세스의 일부는 rootfs를 읽기 전용으로 다시 마운트하고 다른 모든 부트를 마운트 해제하는 것입니다. 다음 부팅시 여전히 존재하는 파일에 로깅 한 후에는 사실상 불가능합니다.
메시지를 보는 가장 쉬운 방법 은 실제 / 바로 전에 일시 중지하도록 스크립트 /etc/init.d/halt
및 / 또는 /etc/init.d/reboot
스크립트를 편집하는 것 입니다. 의 경우 스크립트 명령을 실행 (또는 GUI 편집기 사용) 실제 정지를 수행하는 라인과 모양을. 나를 위해 이것은 라인입니다 :halt
reboot
halt
sudoedit /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 충돌 도 없습니다 .
답변
가장 쉬운 해결책은 사진 대신 비디오를 찍는 것입니다. 나중에 프레임별로 단계별로 살펴볼 수 있습니다.
답변
실시간으로 로그보기
종료하는 동안 일반적으로 종료 프로세스 로그 대신 표시되는 Ubuntu 로고와 깜박이는 표시등이있는 것으로 나타났습니다. 오류가 있으면 표시되지만 지저분합니다. 그러나 종료하는 동안 Windows 키와 r
( Metar)를 누르면 시스템 서비스의 성공 및 실패가 발생하는 것을 볼 수 있습니다. 그래서 나는 정확히 무엇이 깨 졌는지 압니다. 이 키보드 단축키가 쿠분투 설정에만 해당되는지, 아니면 무엇인지 모릅니다. 추가하지 않았습니다. 우연히 발견 한 것 중 하나입니다.
재부팅 후 로그보기
시스템이 재부팅되면 오류 메시지가 로그 파일에 저장되어야합니다. 어떤 로그 파일은 어떤 서비스가 고장 나거나 잘못 구성되어 있는지에 따라 다릅니다. 관련 로그는 거의 확실하게 /var/log/
(또는 그 서브 디렉토리에) 있습니다. ls
, less
, grep
및find
내가 로그에 오류 메시지를 찾기 위해 필요한 한 프로그램 만했습니다 …
오류와 오류를 일으킨 서비스를 발견하면 새 구성을 테스트하기 위해 재부팅 할 필요가 없습니다. 서비스를 다시 시작하면됩니다. 다음과 같은 명령으로 고정 구성을 테스트 할 수 있습니다.
sudo service <service name> restart
답변
bootlogd
실제로 로깅을 관리 하는 방법을 조사한 후 시스템 종료 / 재부팅 프로세스와 시작 프로세스를 로그하도록 설득 할 수 있음을 알 수 있습니다. bootlogd
부팅 프로세스 초기에 시작됩니다. 그런 다음 연결된 장치에 모든 출력을 기록하기 위해 장치 tty
및 일부 마법을 수행 pts
합니다. 그런 다음 부팅 프로세스에서 나중에 중지 될 것입니다.tty
.
경우 bootlogd
IS는 종료 / 재부팅 과정에서 다시 해고 로그가 마운트 해제 포함하는 중 파일 시스템 전에 중지, 다음 부팅시 읽을 수 종료 프로세스의 대부분의 기록이있을 것이다.
bootlogd
시작하는 동안 두 개의 init
스크립트 를 사용하여 시작 및 중지되도록 관리합니다 . 하나는 init
프로세스를 정상적으로 시작 / 중지 하는 일반 스크립트입니다. 다른 하나는로 init
호출 할 때 start
중지 된 첫 번째 스크립트를 호출 한다는 점에서 ‘역순’ 스크립트입니다 . 이 ‘트릭’sysvinit
프로세스를 , 실제로 동일한 서비스를 시작하고 중지 할 때 두 개의 개별 서비스를 시작하는 것으로 보입니다. 모든 것이 올바른 순서로 발생하는지 확인하는 데 필요합니다.
bootlogd
종료 중에 실행 하려면 다음이 필요합니다.
bootlogd
아직 설치 하지 않았다면 설치 하십시오.- 두 개의 init 스크립트를 복사하십시오
- ‘역전 된’스크립트 변경을 중지 시작 대신 시작 중지로 설정하십시오.
- LSB 헤더를 변경하여 종료 / 재부팅시 두 스크립트 모두 적절한 시간에 실행되도록
- 로 설치하십시오
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/log
rootfs에있는 경우에만 작동합니다 . 그렇지 않으면 종속성이 재 작업되어야하므로 중지 된 umountfs
후에 수행됩니다 bootlogd
. 또는 rootfs의 파일에 기록하십시오.
답변
모든 /etc/rc6.d/* 파일을 편집하고 출력을 일부 파일로 리디렉션하면 나중에 읽을 수 있습니다.
이 리디렉션은 또한, 어떤 프로그램이 당신을 말할 것이다 failed
과 why
.
또한 모든 파일에서 매개 변수 start-stop-daemon
를 제거하고 --quiet
매개 변수를 추가하여 를 수정해야 -v
합니다.
그렇게하는 경우 모든 변경 사항을 롤백해야합니다. 변경하기 전에 기존 파일을 백업하는 것이 좋습니다.
답변
/var/log/messages
필요한 데이터를 제공합니다. 당신을 위해 충분하지의 경우, 수정 /etc/syslog.conf
된 모든 데이터를 기록 (I는 로그인 커널 오류를 활성화하는 일명 * 커닝을 보일 것이다) 그러나 REVERT IT BACK 후 재부팅, 또는 로그를위한 공간을 많이 먹을 것이다
답변
내 랩탑의 sudo halt
경우 하드웨어가 아닌 소프트웨어 종료를 수행합니다. 즉, 화면 및 기타 하드웨어가 계속 실행 중입니다. 화면의 마지막 메시지는
시스템 정지
이제 전원 버튼을 누르면 모든 것이 꺼집니다. 당신은 이것을 시도 할 수 있습니다. 시도해 볼 수도 있습니다sudo halt --verbose