Linux使用journalctl命令进行日志分析和管理全过程

 更新时间:2026年01月29日 14:33:24   作者:遇见火星  
这篇文章主要介绍了Linux使用journalctl命令进行日志分析和管理全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

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

  • 传统模式(syslog):日志分散在 /var/log/ 下多个纯文本文件中,分析时需频繁组合 grepawktail 等命令,操作繁琐。
  • 现代模式(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..info 或 journalctl -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 时代不可或缺的日志分析工具。

掌握其核心过滤语法(按时间、服务、优先级)是高效运维的关键。对于复杂问题,应善用组合过滤条件缩小排查范围。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • linux主机AMH管理面板安装教程及建站使用方法(图文)

    linux主机AMH管理面板安装教程及建站使用方法(图文)

    这篇文章主要介绍了linux主机AMH管理面板安装教程及建站使用,需要的朋友可以参考下
    2015-10-10
  • linux中使用grep命令详解

    linux中使用grep命令详解

    在本篇文章里小编给大家整理了关于linux中使用grep命令的相关知识点内容,需要的朋友们跟着学习下。
    2019-03-03
  • Linux Bash调用Python和Java代码过程

    Linux Bash调用Python和Java代码过程

    本文介绍了如何在Linux和Windows系统中使用Bash调用Python和Java程序,并详细解释了Bash脚本中的命令与路径判断、调用Python和Java代码以及重点语法解析
    2025-11-11
  • linux下获取文件的创建时间与实战教程

    linux下获取文件的创建时间与实战教程

    这篇文章主要给大家介绍了关于linux下获取文件的创建时间与实战的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用linux系统具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-12-12
  • 详解Linux下Tomcat开启查看GC信息

    详解Linux下Tomcat开启查看GC信息

    这篇文章主要介绍了详解Linux下Tomcat开启查看GC信息,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-06-06
  • Linux中如何查询运行文件的全路径的方法

    Linux中如何查询运行文件的全路径的方法

    这篇文章主要介绍了Linux中如何查询运行文件的全路径的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • Linux中查看操作系统及其版本信息的多种方法

    Linux中查看操作系统及其版本信息的多种方法

    在服务器运维或者部署系统中,经常需要确认服务器的系统版本、cpu信息等,在Linux系统中,有多种方法可以查看操作系统及其版本信息,以下是一些常用的方法,需要的朋友可以参考下
    2025-09-09
  • Apache配置SSLCARevocationCheck吊销检查的实现

    Apache配置SSLCARevocationCheck吊销检查的实现

    Apache的SSLCARevocationCheck指令用于启用客户端证书吊销状态检查,配置包括CRL和OCSP模式,三种检查模式,建议生产环境采用CRL本地缓存和OCSP实时校验的双保险策略,配合自动化更新脚本,取得安全与可用性之间的平衡
    2026-04-04
  • 腾讯云上免费部署HTTPS的方法步骤

    腾讯云上免费部署HTTPS的方法步骤

    这篇文章主要介绍了腾讯云上免费部署HTTPS的方法步骤,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-11-11
  • Linux按键驱动测试方式

    Linux按键驱动测试方式

    这篇文章主要介绍了Linux按键驱动测试方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-05-05

最新评论