Journalctl

基本概念

作用: 收集系统、内核、服务及应用的日志,并以二进制格式存储。

日志存储位置: 默认存储在 /run/log/journal/(内存中,重启丢失)。

如果配置了持久化存储,则在 /var/log/journal/

工具:通过 journalctl 命令查看和管理日志。

常用命令

查看日志

journalctl

  • 显示所有日志。

journalctl -u [unit]

  • 查看特定服务的日志, 例如:journalctl -u jenkins

  • journalctl -b 查看当前启动(boot)以来的日志。

  • journalctl -k 查看内核日志(类似 dmesg)。

  • journalctl --since "YYYY-MM-DD HH:MM:SS" 查看指定时间后的日志,例如:journalctl --since "2025-03-17 10:00:00"

  • journalctl -f 实时跟踪日志(类似 tail -f)。

过滤日志

  • journalctl -p [priority] 按优先级过滤(0=emerg,7=debug),例如:journalctl -p 3(仅错误)。

  • journalctl \_PID=[pid] 查看特定进程的日志。

  • journalctl | grep [keyword] 搜索包含特定关键词的日志。

其他操作

  • journalctl --disk-usage 查看日志占用的磁盘空间。

  • journalctl --vacuum-size=1G 清理日志,限制总大小为 1GB。

  • journalctl --vacuum-time=2weeks 清理超过 2 周的日志。

配置

  • 配置文件:/etc/systemd/journald.conf

  • 关键选项: Storage

    • volatile:仅存内存。

    • persistent:存磁盘(需确保 /var/log/journal 存在)。

    • auto:默认,若目录存在则持久化。

    • SystemMaxUse= 限制日志占用磁盘空间,例如 SystemMaxUse=500M。

    • MaxFileSec= 单个日志文件的最大时间跨度,例如 MaxFileSec=1month。`

  • 启用持久化存储: 如果默认是 volatile,可以手动创建目录并重启服务:

1sudo mkdir -p /var/log/journal
2sudo systemctl restart systemd-journald
Copyright @ 2024 ~ 2025 czfadmin