之后如何阅读关闭消息?

Sig*_*gur 18 shutdown logs init openrc

我正在使用 Lubuntu 11.10。每次关机我都能读到红色字体的FAIL,但是读不下去了。

那么,如何读取日志消息并尝试解决问题呢?

Gra*_*eme 15

似乎无法将此数据记录到文件中。对于启动过程,有bootlogd创建文件的包/var/log/boot,但没有用于关闭/重启过程。据我所知,rsyslog两者都无法登录,即使有,也会在rsyslog停止后打印消息。我的关机/重启过程的一部分是重新挂载 rootfs 只读并卸载其他所有内容,在此日志记录到下次启动时仍将存在的文件之后几乎是不可能的。

我可以看到查看消息的最简单方法是编辑/etc/init.d/halt和/或/etc/init.d/reboot脚本以在实际halt/之前暂停reboot。对于halt脚本,运行命令sudoedit /etc/init.d/halt(或使用 GUI 编辑器)并查找执行实际停止的行。对我来说,这是一条线:

halt -d -f $netdown $poweroff $hddown
Run Code Online (Sandbox Code Playgroud)

否则它应该在do_stop函数的末尾,并且是唯一调用halt命令的行。找到该行后,只需在上面插入一个新行,内容如下:

read -p "Press enter to halt" reply
Run Code Online (Sandbox Code Playgroud)

保存文件并退出。现在,当您关机时,系统将暂停,直到您按 Enter(或 CTRL-C、CTRL-D 等)。您可以阅读打印在屏幕上的消息。如果文本超过一屏,您可以通过按 来查看终端回滚Shift+PgUp。如果这还不够,有一些方法可以增加回滚缓冲区的大小(虽然可能是一个不同的问题)。

要在系统重新启动时执行相同操作,您必须编辑该/etc/init.d/reboot文件。这里使用的命令当然reboot是相反的,halt并且应该再次位于do_stop函数的末尾。对我来说,这条线是:

reboot -d -f -i
Run Code Online (Sandbox Code Playgroud)

再次在上面的新行中插入以下内容:

read -p "Press enter to reboot" reply
Run Code Online (Sandbox Code Playgroud)

另请注意,这些文件被列为initscripts包的conffiles 。默认情况下,升级包时不会破坏这些编辑,尽管它们会导致冲突。


更完整的解决方案是使用以下脚本:

#! /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
Run Code Online (Sandbox Code Playgroud)

这应该被放入/etc/init.d/pause_hook并且可以使用以下命令在关闭/重新启动时运行:

sudo update-rc.d pause_hook defaults
Run Code Online (Sandbox Code Playgroud)

然后启用实际的钩子,创建/etc/pause_hook.conf包含该行的文件:

PAUSE_HOOK_ENABLED=true
Run Code Online (Sandbox Code Playgroud)

关闭/重启过程现在应该在调用haltorreboot脚本之前暂停,以便有时间查看消息。它也可以通过注释/取消注释中的启用行轻松禁用/重新启用/etc/pause_hook.conf。以dpkg这种方式升级期间也不会有conffile 冲突。


Jim*_*ris 4

最简单的解决方案可能是尝试拍摄视频而不是照片。您可以稍后逐帧浏览它。

  • 其中一些消息是在文件系统卸载后打印的!所以它们不可能全部出现在一个文件中。 (8认同)
  • 我不敢相信没有记录这些消息的文件!我会尝试用视频来记录。 (2认同)