系统运行卡顿、服务突然罢工,或者某个硬件死活认不出来——遇到这类问题,很多人的第一反应是重启。但重启只是暂时掩盖了问题,真正的“病根”往往藏在系统日志里。麒麟OS作为一款成熟的国产操作系统,提供了从底层内核到上层应用的全方位日志记录体系。掌握查看这些日志的方法,就等于拿到了系统运行的“黑匣子”,排查故障才能有的放矢。
一、使用 journalctl 查询 systemd 结构化日志
在麒麟OS V10及之后的版本中,journalctl 是日志管理的核心工具。它接管了由 systemd 启动的所有服务、内核消息甚至用户会话事件,并将它们统一存储为结构化的二进制数据。这种集中化管理的好处是支持强大的过滤和查询,让日志分析不再是海底捞针。
查看全部日志,默认按时间倒序排列,最新的排在最前面:sudo journalctl
如果只想看本次开机后发生的事情,这个命令很实用:sudo journalctl -b
当问题正在发生时,实时追踪日志流就像看现场直播:sudo journalctl -f
要聚焦于某个特定服务,比如排查SSH登录问题:sudo journalctl -u sshd.service
更精准一点,筛选过去一小时内的错误级别信息:sudo journalctl --since "1 hour ago" -p err
二、直接读取 /var/log/ 目录下的持久化文本日志
尽管 journalctl 很强大,但传统的 /var/log/ 目录依然是不可或缺的“日志档案馆”。这里存放着原始的文本日志文件,不依赖于 systemd 是否正常运行。在系统无法正常启动、需要进入恢复模式,或者分析一些非 systemd 管理的古老服务时,这里就是唯一的线索来源。
首先,进入日志的大本营:cd /var/log/
看看里面都有哪些文件:ls -l
对于桌面版用户,syslog 文件记录了大量的通用系统事件:sudo cat /var/log/syslog
而在服务器版上,messages 文件通常是系统消息的核心记录:sudo cat /var/log/messages
面对海量日志,直接使用 grep 搜索关键词是最高效的方式,比如查找所有错误或失败信息:sudo grep -i "error\|failed\|denied" /var/log/syslog
三、调用 dmesg 查看内核环形缓冲区日志
如果说系统日志记录的是“软件层”的活动,那么 dmesg 呈现的就是“硬件层”与内核对话的原始记录。它直接读取内核的环形缓冲区,信息不经过任何日志守护进程。因此,当遇到驱动加载失败、USB设备识别异常、内存报错等底层硬件问题时,dmesg 的输出具有不可替代的诊断价值。
查看完整的、带有人类可读时间戳的内核日志:sudo dmesg -T
通常我们只关心错误和警告,可以过滤掉无关信息:sudo dmesg -l err,warn
实时监控新出现的内核消息,适用于插拔设备时观察状态:sudo dmesg -w
将当前内核日志保存下来,方便后续详细分析或分享:sudo dmesg -T > ~/kernel_log.txt
例如,排查电源管理或固件相关的问题时,可以这样过滤:sudo dmesg -T | grep -i "acpi\|firmware"
四、通过图形化日志查看器浏览分类日志(桌面环境适用)
对于不习惯命令行的用户,麒麟KOS桌面版贴心地预装了图形化的“日志查看器”。这个工具本质上是一个前端,它自动聚合了 /var/log/ 目录和 journald 的数据源,提供了关键词高亮、时间轴导航和分类浏览功能,大大降低了日志查看的门槛。
在开始菜单的“系统工具”分类里,找到并打开日志查看器。
左侧面板按类别进行了划分,比如系统日志、安全日志、启动日志,点击即可浏览相应内容。
遇到问题,直接在右上角的搜索框输入关键词,比如“NetworkManager”或“fail”,然后点击搜索。
对某条记录感兴趣?双击它,右侧窗口就会展开详细信息,包括精确的时间戳、进程ID、严重级别和完整的消息内容。
如果需要将日志发给技术支持或存档,利用工具栏的导出功能,可以将选定范围的日志保存为文本文件。
总而言之,从命令行的精准过滤到图形界面的直观浏览,麒麟OS提供了一套完整的日志访问方案。下次系统再“闹脾气”,不妨先别急着重启,打开这些日志看看,很可能答案就在其中。
