当前位置: 首页 > backend >正文

journalctl 日志查看工具介绍

基本介绍

journalctl 是一种用于查看、管理 Linux 系统日志的命令行工具,是 systemd 日志记录系统的一部分。journalctl 能够快速加载大量日志文件,并且支持多种过滤和查询方式。

systemd 是 Linux 系统的一个初始化系统,它负责启动和管理各种服务和进程。systemd 会记录系统和应用程序的各种事件,如启动、停止、故障、警告等,这些事件被称为日志。日志可以帮助用户了解系统的运行状况,排查问题,优化性能等。

journalctl 的基本原理如下:

  • 采集日志:journalctl 的日志由守护进程 systemd-journald 负责从内核、系统服务以及应用程序中采集

  • 存储日志:systemd-journald 采集的日志将会以二进制格式存储在 /var/log/journal 目录下,每个日志条目都带有元数据,如时间戳、优先级、生成日志的服务名称等

  • 轮转日志:当日志文件达到一定大小或时间限制时,systemd-journald 会自动保存并关闭当前文件,并创建一个新文件继续写入日志,实现日志轮转

  • 检索日志:用户通过执行 journalctl 命令读取上述二进制日志文件,journalctl 引入了 B-trees 索引,可以实现快速检索日志

基本使用

1、查看所有日志

    journalctl 

    2、查看实时日志

      journalctl -f                  # -f 即 --follow

      3、查看指定服务的日志

        journalctl -u nginx            # -u 即 --unit

        4、查看指定行数的日志

          journalctl -n 5000             # -n 即 --lines

          5、查看指定启动会话的日志

            # 查看当前启动会话的日志journalctl -b                  # -b 即 --boot
            # 查看上次启动会话的日志journalctl -b -1               # 依此类推,-2 ...

            6、查看指定时间的日志

              # 查看开始于某个时间的日志journalctl -S "2024-04-14"     # -S 即 --since,journalctl -S "1 hour ago"     # 也可以是相对时间
              # 查看截止到某个时间的日志journalctl -U "2025-04-15"     # -U 即 --untiljournalctl -U "yesterday"

              7、查看指定优先级的日志

                journalctl -p 3                # -p 即 --priorityjournalctl -p 2..4             # 查看多个优先级
                # 0 或 emerg: 系统不可用(Emergency)# 1 或 alert: 需要立即采取行动(Alert)# 2 或 crit: 严重情况(Critical)# 3 或 err: 错误情况(Error)# 4 或 warning: 警告情况(Warning)# 5 或 notice: 正常但重要的情况(Notice)# 6 或 info: 一般信息(Informational)# 7 或 debug: 调试信息(Debug)

                 

                8、查看内核日志

                journalctl -k                  # -k 即 --dmesg

                9、禁用分页器(直接将日志内容输出到终端)

                journalctl --no-pager

                10、清理日志

                # 按时间清理(清理早于指定时间的日志条目)journalctl --vacuum-time 1s/m/h/d/w/month/year
                # 按大小清理(日志文件总大小达到指定值时清理)journalctl --vacuum-size 100M

                11、启用持久化

                # 检查 journalctl 日志是否启用持久化ls /var/log/journal             # 目录存在则为启用
                # 启用 journalctl 日志持久化mkdir -p /var/log/journalsystemd-tmpfiles --createsystemctl restart systemd-journald

                12、指定日志输出格式

                journalctl -o json-pretty       # -o 即 --output# 可选 short、short-precise、short-iso、short-iso-precise、short-full、short-monotonic、short-unix、verbose、export、json、json-pretty、json-sse、json-seq、cat、with-unit

                13、查看详细日志

                 在 journalctl 命令中,-x(或 --catalog)选项的作用是 在日志输出中嵌入解释性的帮助信息,通常以更易读的形式显示日志条目的附加描述(来自消息目录 catalog)。

                具体作用:

                1. 增强可读性

                  • 对于某些系统日志(如服务错误、硬件事件等),-x 会尝试从预设的“消息目录”中查找对应的详细描述,并追加到日志输出中。

                  • 例如,一条内核或服务的错误日志可能会附带一段人类可读的解释,帮助用户理解问题的原因。

                2. 适用场景

                  • 当日志本身是简短的错误代码或模糊提示时(如 "Failed to start foo.service"),-x 可能会提供更详细的背景信息(如依赖问题、配置错误等)。


                示例对比:

                不加 -x

                plaintext

                复制

                下载

                May 12 10:00:00 host systemd[1]: Failed to start nginx.service.
                加 -x

                plaintext

                复制

                下载

                May 12 10:00:00 host systemd[1]: Failed to start nginx.service.
                -- Subject: Unit nginx.service has failed
                -- Defined-By: systemd
                -- Support: https://lists.freedesktop.org/mailman/listinfo/systemd-devel
                -- 
                -- Unit nginx.service has entered a failed state.
                -- 
                -- Possible causes: Missing dependencies, misconfiguration, or service crash.

                (实际输出可能因系统和服务不同而变化)


                其他常见用法组合:

                • journalctl -xe
                  -e 直接跳转到日志尾部(最新部分),结合 -x 查看带解释的最近错误。

                • journalctl -xu service-name
                  查看某个服务的日志并附带解释(-u 筛选服务)。


                注意事项:

                • 并非所有日志都有对应的解释信息,取决于系统是否配置了消息目录(如 systemd 部分服务有,但第三方应用可能没有)。

                • 需要管理员权限(如 sudo)才能访问所有日志。

                如果需要调试问题,-x 是一个很有用的辅助选项!

                http://www.xdnf.cn/news/5786.html

                相关文章:

              • istringstream的简化源码详解
              • 热部署与双亲委派
              • pclinuxos系统详解
              • 应急响应靶机——WhereIS?
              • CRM和SCRM有什么区别
              • python实现usb热插拔检测(windows)
              • Android Framework
              • LWIP传输层协议笔记
              • Git 用法总结
              • 微信小程序原生swiper高度自适应图片,不同屏幕适配,正方形1:1等比例图片轮播
              • E+H流量计与Profibus DP主站转Modbus RTU/TCP网关通讯
              • DeepSeek新玩法: RAG Chatbot 3.0测试人的新大脑
              • 深入探讨dubbo组件的实践
              • Dapp开发-如何开发一个dapp
              • Vue 2 项目中配置 Tailwind CSS 和 Font Awesome 的最佳实践
              • MYSQL之表的约束
              • rbac模型详解
              • PHP编写图书信息爬虫程序
              • 力扣451:根据字符频率排序(桶排序)
              • 快解析为TPDDNS用户提供免费替换服务
              • 小白学习Java第18天(上):mybatis
              • 994. 腐烂的橘子
              • MYSQL时间函数、group by 和partition by的区别、组内编号leetcode学习
              • GitHub 趋势日报 (2025年05月11日)
              • LeetCode热题100——链表
              • docker-compose的yml文件配置deploy参数失效use the ‘deploy‘ key, which will be ignored.
              • MIMO 检测(2)--噪声白化
              • 雷池WAF的身份认证 - 钉钉配置教程
              • hi3516cv610的VPSS_ONLINE支持在vpss做图片放大的操作吗
              • IT团队如何通过ManageEngine卓豪Endpoint Central有效管理远程终端