查看日志

查看所有日志

1
journalctl

这个命令将显示所有可用的日志条目,按时间倒序排列。

实时查看日志(跟随模式)

1
journalctl -f

使用 -f 选项可以实时查看日志更新,类似于 tail -f 的效果。

查看最近的日志条目

1
journalctl -n 100

-n 选项用于显示最近的日志条目,100 表示显示最近的 100 条日志。

限制日志条目到特定时间

1
journalctl --since "2024-09-01 12:00:00" --until "2024-09-01 14:00:00"

--since 和 --until 选项可以用来限制显示的时间范围。

按时间排序

1
journalctl --no-pager --reverse

--reverse 选项用于将日志条目按时间正序排列(从最新到最旧)。

日志筛选

按服务筛选

1
journalctl -u nginx

-u 选项后跟服务名称,用于显示指定服务的日志。例如,显示 nginx 服务的日志。

按优先级筛选

1
journalctl -p err

-p 选项后跟日志优先级,可以是 emerg, alert, crit, err, warning, notice, info, debug 中的一个。例如,err 仅显示错误级别的日志。

按日志标识筛选

1
journalctl _PID=1234

_PID 后面跟进程 ID,用于显示特定进程的日志。

按用户筛选

1
journalctl _UID=1000

_UID 后面跟用户 ID,用于显示特定用户的日志。

其他功能

显示内核日志

1
journalctl -k

-k 选项用于显示内核日志消息。

导出日志到文件

1
journalctl > system-log.txt

将日志输出重定向到文件,例如 system-log.txt。

查看日志统计

1
journalctl --disk-usage

显示日志所占用的磁盘空间。

清理旧日志

1
journalctl --vacuum-time=1w

--vacuum-time 选项用于删除指定时间之前的日志。例如,1w 表示删除一周之前的日志。

查看持久化日志配置

1
cat /etc/systemd/journald.conf

这个配置文件定义了日志的持久化设置,例如 Storage=persistent 可以将日志持久化到磁盘。

例子

  1. 查看特定日期的日志

    1
    journalctl --since "2024-09-03" --until "2024-09-04"
  2. 查看特定服务的实时日志

    1
    journalctl -u apache2 -f
  3. 查看包含特定关键字的日志

    1
    journalctl | grep "ERROR"
  4. 限制日志条目数量

    1
    journalctl -n 50
  5. 查看系统启动日志

    1
    journalctl -b

1. 配置文件路径

配置文件路径:

1
/etc/systemd/journald.conf

2. 配置选项

在 /etc/systemd/journald.conf 文件中,你可以找到或添加以下选项来控制日志的存储和限制:

Storage

  • volatile: 仅在内存中存储日志,系统重启后日志丢失。
  • persistent: 将日志存储在磁盘上,即使系统重启也会保留。
  • auto: 默认设置,根据磁盘是否可用来决定是否持久化日志。

示例:

1
Storage=persistent

SystemMaxUse

  • 设置日志存储的最大磁盘使用量。超过此限制,旧日志会被清理以释放空间。格式为 size(例如 1G)。

示例:

1
SystemMaxUse=1G

SystemKeepFree

  • 保留磁盘上的最小空闲空间,日志存储不会超过这个空间。格式为 size(例如 500M)。

示例:

1
SystemKeepFree=500M

SystemMaxFileSize

  • 单个日志文件的最大大小。格式为 size(例如 100M)。

示例:

1
SystemMaxFileSize=100M

SystemMaxFiles

  • 限制系统日志目录中的最大文件数。

示例:

1
SystemMaxFiles=10

RuntimeMaxUse

  • 控制在 volatile 存储模式下的日志存储最大磁盘使用量。

示例:

1
RuntimeMaxUse=500M

RuntimeKeepFree

  • 控制在 volatile 存储模式下保留的磁盘空闲空间。

示例:

1
RuntimeKeepFree=100M

RuntimeMaxFileSize

  • 控制在 volatile 存储模式下单个日志文件的最大大小。

示例:

1
RuntimeMaxFileSize=50M

RuntimeMaxFiles

  • 控制在 volatile 存储模式下的最大日志文件数量。

示例:

1
RuntimeMaxFiles=5

3. 应用配置更改

修改配置文件后,需要重新加载 systemd-journald 配置以使更改生效:

1
sudo systemctl restart systemd-journald

4. 清理旧日志

使用 journalctl 的 --vacuum 选项可以手动清理旧日志:

按时间清理日志

1
sudo journalctl --vacuum-time=1w

这个命令会删除 1 周之前的所有日志。

按大小清理日志

1
sudo journalctl --vacuum-size=1G

这个命令会确保日志总大小不超过 1GB。超过的部分将被删除。

按文件数量清理日志

1
sudo journalctl --vacuum-files=10

这个命令会确保日志文件数量不超过 10 个。

示例

  • 配置日志存储为持久化模式,限制总大小为 2GB

    1
    2
    Storage=persistent
    SystemMaxUse=2G
  • 配置日志存储为内存模式,限制总大小为 500MB

    1
    2
    Storage=volatile
    RuntimeMaxUse=500M
  • 设置日志文件最大大小为 50MB

    1
    SystemMaxFileSize=50M