journalctl 常用命令

journalctl 常用命令

从2012年开始,大部分linux发行版本开始从传统的 systemv 初始化系统移植到一个叫做 systemd 的全新系统。systemd 用来启动系统并管理进程。systemd 包含了一个叫做 journalctl 的辅助组件,其主要作用是管理系统的事件日志记录。

systemctl 介绍

systemctl是一个systemd工具,主要负责控制systemd系统和服务管理器。

重要:systemctl接受服务(.service),挂载点(.mount),套接字(.socket)和设备(.device)等作为单位。

journalctl概述

journalctl可以查看所有的系统日志文件,由于日志信息量很大,journalctl还提供了各种参数帮助用户更快速的定位到日志信息。
默认情况下,用户都可以访问自己的日志。对于系统主日志和其他用户的日志,仅限于有权限的用户访问,比如root用户,wheel组和systemd组的用户。

journalctl命令详解

显示所有的信息

journalctl
如果不带参数,journalctl将显示所有的信息(从旧到新)

journalctl -xefu nginx

反序输出

journalctl -r
-r参数表示反序输出(从新到旧)

跟踪日志文件,读取最新条目

journalctl -f
要使用 journalctl 跟踪日志文件 (读取最新条目), 只需在命令后加参数 “-f” 即可。会实时输出最新日志

指定输出显示的大小

journalctl -n []
可以通过-n 或者 --lines=参数来指定显示的行数大小。

显示指定时间的事件日志

journalctl --since "2021-01-05 20:00:00" --until "2021-01-06 14:00:00"
journalctl --since 09:00 --until "1 hour ago"
journalctl可以显示指定时间段内发生的事件日志。 通过 since 和 until 参数来实现。
其中日期的格式是“YY-MM-DD HH:MM:SS”

查看某些服务的日志

journalctl -u nginx.service
journalctl -u nginx.service -u docker.service

格式化输出的信息

通过-o 或者--output 可以指定日志的输出格式
journalctl -o short //默认选项
journalctl -o short-precise //时间更精细

Journal维护

存储太多数据会带来巨大压力,因此我们还需要了解如何清理部分陈旧日志以释放存储空间。

查看磁盘使用量

使用--disk-usage标记查看journal的当前磁盘使用量:
journalctl --disk-usage

删除旧有日志

如果需要对journal记录进行清理,则可使用两种不同方式(适用于systemd 218 及更高版本)。

  1. 使用--vacuum-size选项,则可硬性指定日志的总体体积,意味着其会不断删除旧有记录直到所占容量符合要求:
    journalctl --vacuum-size=1G

  2. 另一种方式则是使用--vacuum-time选项。任何早于这一时间点的条目都将被删除。
    例如,去年之后的条目才能保留:
    journalctl --vacuum-time=1years

限定Journal扩展

可以配置自己的服务器以限定journal所能占用的最高容量。要实现这一点,我们需要编辑/etc/systemd/journald.conf文件。

以下条目可用于限定journal体积的膨胀速度:

SystemMaxUse=: 指定journal所能使用的最高持久存储容量。
SystemKeepFree=: 指定journal在添加新条目时需要保留的剩余空间。
SystemMaxFileSize=: 控制单一journal文件大小,符合要求方可被转为持久存储。
RuntimeMaxUse=: 指定易失性存储中的最大可用磁盘容量(/run文件系统之内)。
RuntimeKeepFree=: 指定向易失性存储内写入数据时为其它应用保留的空间量(/run文件系统之内)。
RuntimeMaxFileSize=: 指定单一journal文件可占用的最大易失性存储容量(/run文件系统之内)。

作者

孤独小狼

发布于

2023-03-06

更新于

2023-03-06

许可协议

评论