journalctl
和 dmesg
是两个在 Linux 系统中查看日志信息的工具,它们提供了不同层次和角度的系统日志。
-
journalctl
:journalctl
是systemd-journald
服务的一个前端,用于检查和查询系统日志。- 它使用
systemd
的日志系统,将日志信息存储在二进制日志文件中,这些文件通常位于/var/log/journal/
目录下。 journalctl
提供了强大的查询功能,允许按时间范围、单元(service)、日志级别等条件来过滤日志信息。- 它支持彩色输出和更友好的格式化,使得阅读日志更加方便。
使用示例:
journalctl journalctl -u <unit_name> journalctl -p err # 只显示错误级别的日志
-
dmesg
:dmesg
显示系统启动时的日志信息,包含了内核和设备驱动程序的消息。- 它输出的是当前内核环缓冲区的内容,通常包括硬件检测、设备初始化等启动时的信息。
dmesg
不存储日志到文件,仅显示缓冲区的内容。如果系统启动后时间较长,可以使用dmesg -T
以人类可读的时间戳显示。
使用示例:
dmesg dmesg | grep <keyword>
在开发中,可以结合使用这两个工具,具体取决于想要查看的信息。一些指导如下:
- 使用
journalctl
以更详细和结构化的方式查看系统日志,特别是服务单元的日志,以便更好地追踪问题。 - 使用
dmesg
查看内核启动时的信息、硬件相关的消息,以及与设备驱动程序相关的问题。 - 在排查问题时,可以结合两者,首先查看
dmesg
以了解内核和设备启动时的问题,然后使用journalctl
进一步查看服务运行时的详细信息。
总的来说,这两个工具在 Linux 系统维护和故障排除中都是非常有用的。