news 2026/5/1 9:43:21

在Linux中使用journalctl命令进行日志分析和管理详细教程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
在Linux中使用journalctl命令进行日志分析和管理详细教程

目前,在大多数主流 Linux 发行版中,systemd已取代传统的SysVinit成为默认的初始化系统。其最大的优势之一在于统一、高效的日志管理系统。

  • 传统模式(syslog):日志分散在/var/log/下多个纯文本文件中,分析时需频繁组合grep,awk,tail等命令,操作繁琐。

  • 现代模式(systemd-journald):日志被集中收集并以二进制格式结构化存储,通过journalctl这一单一命令,即可提供强大的查询、过滤和实时监控能力,大大提升了系统管理员排错和审计的效率。

1.核心概念
  • journaldsystemd套件中的日志收集守护进程。它负责从内核、系统服务、应用程序等各类来源接收日志消息,并写入到系统日志中。

  • journalctl:用于与journald交互的命令行工具。它是查询、分析和操作这些集中式日志的核心利器。

2.确认日志服务已启用

部分桌面发行版可能默认不持久化存储日志。请按以下步骤验证和启用:

(1)检查日志目录

确认/var/log/journal/目录是否存在。若不存在,需要手动创建并设置正确权限(通常系统会自动处理),如下命令:

sudo mkdir -p /var/log/journal sudo chown root:systemd-journal /var/log/journal sudo chmod 755 /var/log/journal

示例:

[root@yyzcdb81 ~]# mkdir -p /var/log/journal [root@yyzcdb81 ~]# chown root:systemd-journal /var/log/journal [root@yyzcdb81 ~]# chmod 755 /var/log/journal [root@yyzcdb81 ~]#

(2)检查配置文件

编辑/etc/systemd/journald.conf,确保Storage=选项设置为persistent(永久存储):

[Journal] Storage=persistent

(3)重启 journald 服务

[root@yyzcdb81 ~]# systemctl restart systemd-journald [root@yyzcdb81 ~]#

(4)验证目录是否被使用

[root@yyzcdb81 ~]# ls -la /var/log/journal/ 总用量 8 drwxr-xr-x 3 root systemd-journal 46 1月 16 11:48 . drwxr-xr-x. 20 root root 4096 1月 16 11:42 .. drwxr-xr-x 2 root root 206 1月 16 11:48 763d2caf072f43a4838ece68a2b5010a [root@yyzcdb81 ~]#

3.基础操作:查看与导航日志
3.1 查看完整日志
journalctl

默认按时间顺序(从旧到新)显示所有日志,并使用less分页器进行浏览。

关于less的快捷键功能如下:

快捷键功能
空格键

Page Down

向下翻一页

b

Page Up

向上翻一页

g

跳转到第一行

G

跳转到最后一行

/关键词

向下搜索

?关键词

向上搜索

n

/N

跳转到下一个/上一个匹配项

q

退出

3.2基本显示控制

(1)反转顺序(最新优先)

journalctl -r

(2)仅查看最新 N 行

journalctl -n 10

(3)禁用分页,直接输出

journalctl --no-page

它适用于脚本中或需要重定向时。

(4)实时跟踪日志

journalctl -f

功能类似tail -f,按Ctrl+C终止。

4.进阶技巧:精准过滤日志

journalctl的真正威力在于其强大的过滤能力。

4.1 按时间过滤

(1)使用自然语言

journalctl --since "yesterday" journalctl --since "today" journalctl --since "2 hours ago" --until "1 hour ago"

(2)使用精确时间戳

journalctl --since "2026-01-14 09:00:00" --until "2026-01-15 20:00:00"

(3)显示 UTC 时间

journalctl --utc
4.2 按系统组件过滤

(1)按服务(Unit)

journalctl -u sshd -u nginx.service

(2)按进程ID

journalctl _PID=1111

(3)按用户/组ID

journalctl _UID=1000 _GID=1000

(4)仅内核消息

journalctl -k

4.3 按优先级(日志等级)过滤

系统日志按严重程度分为以下等级(数字越小越严重):

优先级数字名称说明

0

emerg

系统不可用

1

alert

必须立即采取措施

2

crit

严重情况

3

err

错误

4

warning

警告

5

notice

普通但重要的事件

6

info

信息性消息

7

debug

调试信息

查看特定级别及以上journalctl -p err(显示所有错误、严重、警报和紧急消息)

查看级别范围journalctl -p warning..infojournalctl -p 4..6

4.4 按系统启动周期过滤

(1)列出所有启动记录

journalctl --list-boots
[root@yyzcdb81 ~]# journalctl --list-boots 0 fb70ee73675940929779319e7d577041 五 2025-12-19 02:10:49 CST—五 2026-01-16 12:20:01 CST [root@yyzcdb81 ~]#

(2)查看特定启动周期的日志

journalctl -b -0 # 当前启动周期 journalctl -b -1 # 上一次启动周期 journalctl -b -2 # 上上次启动周期
5.综合应用:解决实际问题的命令示例
5.1 查看 SSH 服务从今早开始出现的错误
journalctl -u ssh --since "today" -p err
5.2 系统刚刚启动失败,查看上次启动的所有内核和关键错误
journalctl -b -1 -k -p crit..err
5.3 实时监控 Nginx 服务的访问日志(info级别)
journalctl -u nginx -f _TRANSPORT=journal PRIORITY=6

5.4 经典排错命令

常用于系统服务启动失败后,立即查看详细的错误上下文。

journalctl -xe
  • -e:直接跳转到日志末尾。

  • -x:提供额外的解释信息和可能的解决方案链接(如果存在)。

6.系统维护与资源管理
6.1 检查日志占用的磁盘空间
journalctl --disk-usage
[root@yyzcdb81 ~]# journalctl --disk-usage Archived and active journals take up 272.0M on disk. [root@yyzcdb81 ~]#
6.2清理历史日志(谨慎操作)
# 清理早于指定时间的日志 journalctl --vacuum-time=2weeks # 或将日志总体积限制到指定大小 journalctl --vacuum-size=500M
[root@yyzcdb81 ~]# journalctl --vacuum-time=2weeks Deleted archived journal /var/log/journal/763d2caf072f43a4838ece68a2b5010a/system@ec908698112d428d9c82876cf1f78404-0000000000000001-0006463de16e9c8a.journal (128.0M). Deleted archived journal /var/log/journal/763d2caf072f43a4838ece68a2b5010a/system@ec908698112d428d9c82876cf1f78404-000000000002392b-0006467d60845bf4.journal (128.0M). Vacuuming done, freed 256.0M of archived journals on disk. [root@yyzcdb81 ~]# journalctl --disk-usage Archived and active journals take up 16.0M on disk. [root@yyzcdb81 ~]# [root@yyzcdb81 ~]# journalctl --vacuum-size=500M Vacuuming done, freed 0B of archived journals on disk. [root@yyzcdb81 ~]#

journalctl是 systemd 时代不可或缺的日志分析工具。掌握其核心过滤语法(按时间、服务、优先级)是高效运维的关键。对于复杂问题,应善用组合过滤条件缩小排查范围。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/15 20:54:31

计算机毕设 java 基于 BS 架构疫情居家隔离服务系统 基于 SpringBoot 的疫情居家隔离管理平台 Java 疫情隔离服务与物资保障系统

计算机毕设 java 基于 BS 架构疫情居家隔离服务系统 c615l9(配套有源码 程序 mysql 数据库 论文)本套源码可以先看具体功能演示视频领取,文末有联系 可分享在疫情防控常态化背景下,居家隔离人员的服务保障和管理工作面临流程繁琐、…

作者头像 李华
网站建设 2026/4/25 13:04:05

‌从手动脚本到声明式自治:Kubernetes Operator如何重塑测试环境管理

软件测试从业者每天面对的,不是代码缺陷,而是环境的混沌——测试集群状态不一致、依赖版本错乱、环境搭建耗时数小时、缺陷复现依赖“运气”。传统基于Shell脚本或CI/CD流水线的手动管理方式,正遭遇前所未有的效率瓶颈。Kubernetes Operator的…

作者头像 李华
网站建设 2026/4/21 2:18:42

【收藏必备】LangGraphGo+Skills插件实战:从零构建AI漫画生成智能体,附完整代码与踩坑经验

本文详细介绍了使用LangGraphGo框架结合Skills插件系统构建AI漫画生成智能体的完整实现。内容包括技术架构设计、工具自动发现机制、参数转换实现、工作流程设计及踩坑经验。项目实现了从分镜生成、图像生成到PDF合并的全流程,提供了完整代码和解决方案,…

作者头像 李华
网站建设 2026/4/20 22:47:43

电子保单的数字化助力

OCR识别电子保单,简单来说就是通过技术将电子保单图像里的文字转化为可编辑文本,是保险行业推进数字化的重要工具。 它的工作流程清晰:先采集电子保单图像,经过预处理优化画面,再分割字符、提取特征,最后完…

作者头像 李华
网站建设 2026/5/1 4:06:32

PCB表面缺陷检测:如何从数据到模型实战

PCB表面缺陷检测数据集 含有xml标签文件 可用于yolov3 yolov4 yolov5 yolov6 yolov7 yolov8目标检测工业自动化时代,PCB板缺陷检测是计算机视觉领域的重要应用之一。今天,我将带大家从零开始,探索如何利用公开的PCB缺陷检测数据集&#x…

作者头像 李华
网站建设 2026/5/1 8:49:35

Python生成器(Generator)与Yield关键字:惰性求值之美

SQLAlchemy是Python中最流行的ORM(对象关系映射)框架之一,它提供了高效且灵活的数据库操作方式。本文将介绍如何使用SQLAlchemy ORM进行数据库操作。 目录 安装SQLAlchemy 核心概念 连接数据库 定义数据模型 创建数据库表 基本CRUD操作…

作者头像 李华