使用journalctl

使用journalctl

我注意到我的/var/log/boot.log文件的日期是 2016-04-22,上次启动时使用的是 15.10。Xenialboot.log文件位于哪里?

答案1

使用journalctl

由于journald包含所有日志,您可以使用journalctl命令并加入适当的过滤器。在 的情况下boot.log,它用于包含来自 init 系统的消息,您可以执行以下操作:

journalctl -b0 SYSLOG_PID=1
  • -b0显示当前启动、-b1上次启动等消息。如果不选择此-b选项,journalctl则显示日志开头的消息。
  • SYSLOG_PID过滤来自 PID 1(又名 init)的消息。

或者:

journalctl -b0 --system _COMM=systemd
  • _COMM=systemd查找来自systemd命令的消息。由于systemd是 init,所以这是我们感兴趣的。
  • --system过滤来自系统日志而不是用户会话日志的消息。

例子:

muru@muru-vm:~$ journalctl -b0 SYSLOG_PID=1
Apr 30 12:29:18 muru-vm systemd[1]: systemd 229 running in system mode. (+PA
Apr 30 12:29:18 muru-vm systemd[1]: Detected virtualization qemu.
Apr 30 12:29:18 muru-vm systemd[1]: Detected architecture x86-64.
Apr 30 12:29:18 muru-vm systemd[1]: Set hostname to <muru-vm>.
Apr 30 12:29:18 muru-vm systemd[1]: Initializing machine ID from random gene
Apr 30 12:29:18 muru-vm systemd[1]: Installed transient /etc/machine-id file
Apr 30 12:29:18 muru-vm systemd[1]: Set up automount Arbitrary Executable Fi
Apr 30 12:29:18 muru-vm systemd[1]: Listening on fsck to fsckd communication
Apr 30 12:29:18 muru-vm systemd[1]: Reached target User and Group Name Looku
Apr 30 12:29:18 muru-vm systemd[1]: Listening on udev Kernel Socket.
Apr 30 12:29:18 muru-vm systemd[1]: Started Forward Password Requests to Wal
Apr 30 12:29:18 muru-vm systemd[1]: Listening on /dev/initctl Compatibility 
Apr 30 12:29:18 muru-vm systemd[1]: Listening on Journal Socket.
Apr 30 12:29:18 muru-vm systemd[1]: Created slice User and Session Slice.
Apr 30 12:29:18 muru-vm systemd[1]: Created slice System Slice.
Apr 30 12:29:18 muru-vm systemd[1]: Starting Braille Device Support...
Apr 30 12:29:18 muru-vm systemd[1]: Mounting POSIX Message Queue File System
Apr 30 12:29:18 muru-vm systemd[1]: Mounting Debug File System...
Apr 30 12:29:18 muru-vm systemd[1]: Mounting Huge Pages File System...
Apr 30 12:29:18 muru-vm systemd[1]: Starting Load Kernel Modules...
Apr 30 12:29:18 muru-vm systemd[1]: Starting Uncomplicated firewall...
Apr 30 12:29:18 muru-vm systemd[1]: Starting Create list of required static 
lines 1-23

journalctl默认情况下在寻呼机中打开日志,因此您不需要通过管道传输到less


持久日志记录

Ubuntu 默认不启用持久 journald 日志。感谢@Auspex 的评论,您需要执行以下任一操作:

  1. 编辑/etc/systemd/journald.conf以包括:

    Storage=persistent
    
  2. 手动创建/var/log/journal目录:

    mkdir /var/log/journal
    systemd-tmpfiles --create --prefix /var/log/journal
    systemctl restart systemd-journald
    

有关的:

答案2

我正在查看一些错误报告并注意到这个:https://bugs.launchpad.net/ubuntu/+source/ubuntu-gnome-default-settings/+bug/1536771Plymouth 实际上正在写入 boot.log。

如果你看看https://launchpadlibrarian.net/257898272/plymouth-debug.log并在浏览器中搜索“boot.log”,您会得到以下几行:

[main.c:821] on_system_initialized:system now initialized, opening log 
[main.c:742] get_log_file_for_state:returning log file '/var/log/boot.log'
[main.c:805] prepare_logging:opening log '/var/log/boot.log'

我不了解 Plymouth 的内部工作原理,但由于它负责在登录屏幕之前显示的启动画面,我只能假设,如果在进入登录屏幕之前没有启动画面(黑屏),则文件没有被修改。如果在登录屏幕之前确实有启动画面,则启动过程输出将重定向到 boot.log 文件。

答案3

在 Ubuntu 16.04 中,该boot.log文件仍然位于/var/log文件夹中,如您所见这里。启动日志文件来自今天(2016-04-29)。也许您在安装 Ubuntu 16.04 或将操作系统从 Ubuntu 15.10 升级到 Ubuntu 16.04 LTS 时出现了问题。

或者,您可以从综合文件中检查一般的启动行为kern.log。另一个可能的替代方案是手动配置系统日志守护进程生成启动日志文件,下面是如何执行此操作的教程:如何查看和配置 Linux 日志

附加信息 :

我调查了两台不同机器上的启动日志行为。在基于 UEFI 的 BIOS 的计算机上,该boot.log文件存在 - 但在基于旧版 BIOS 的计算机上,它似乎根本不存在。因此,如果系统安装在旧版 BIOS (MBR/msdos) 模式下,这可能是您的boot.log文件日期为 2016-04-22 的原因,它是 Ubuntu 15.10 的遗留问题。

更新信息 2016-05-02:

我继续调查启动日志文件的行为,发现该boot.log文件仍然存在于基于 UEFI 的机器上,但几天以来该文件都是空的。我尝试的另一种方法是安装启动图,但在重新启动系统后,它bootchart.png并不像预期的那样存在于文件夹中...只有一个空文件夹,其中也不包含预期的文件。/var/log/var/log/bootchartbootchart.png

更新信息 2016-05-04:

今天,该boot.log文件似乎又恢复了“功能”,里面充满了启动过程中的部分信息。这似乎是一种随机变化的行为,我认为在 Ask Ubuntu 上无法解决这个问题 - 所以你应该考虑在 Launchpad 上提交错误报告来解决这个问题!

结论- 经过一周对 Ubuntu 16.04 中的文件行为的调查boot.log:您不必再担心/var/log/boot.log,只需习惯journalctl即可。

相关内容