journalctl

journalctl 是一个用于查看和管理 systemd-journald 服务日志的命令行工具。systemd-journald 是一个系统日志收集和管理的守护进程,它负责收集来自各个服务和内核的日志消息,并将其存储在日志数据库中

  • 配置目录: /etc/systemd/journald.conf
  • 日志目录: /var/log/journal

    系统配置命令

#查看运行状态
systemctl status systemd-journald

#日志存放位置
ls -l /var/log/journal/

journalctl --disk-usage     #查看日志占用磁盘大小

日志保存多久
journalctl --vacuum-time=180d
journalctl --vacuum-time=1years

日志最大空间
journalctl --vacuum-size=300M
journalctl --vacuum-size=5G

查询命令

查看所有日志消息:
journalctl
查看最新的日志消息:
journalctl -n 50
按时间倒序查看指定数量的日志消息:
journalctl -n <数量>

#查看内核日志
journalctl _TRANSPORT=kernel

#查看指定服务的日志
journalctl -u docker

#查看指定用户的日志:
$journalctl -u user

#查看特定时间范围的日志
journalctl --since "2024-03-27" --until "2024-03-28"
journalctl --since "1 hour ago"

#查看错误级别及以上的日志
journalctl -p err
日志级别从高到低包括:
    emerg (0): 紧急消息,系统无法使用,必须立即采取行动。
    alert (1): 需要立即修复,例如硬盘故障。
    crit (2): 关键情况,如应用程序组件失败。
    err (3): 错误事件,但不影响系统运行。
    warning (4): 警告,可能出现潜在问题。
    notice (5): 正常但重要的消息。
    info (6): 信息性消息,用于监控或调试。
    debug (7): 调试信息,用于开发者诊断问题


查看特定单元(unit)的日志消息(如服务):
journalctl -u <单元名称>



过滤特定优先级的日志消息:
journalctl -p <优先级>

查看特定用户的日志消息:
journalctl _UID=<用户ID>

这只是 journalctl 命令的一些示例用法,您可以使用 man journalctl 命令来查看完整的命令文档和更多选项。

输出格式

#以可读的格式显示日志:
journalctl -o short

#以 JSON 格式显示日志:
journalctl -o json

#以详细格式显示日志:
journalctl -o verbose

#以特定字段的格式显示日志:
journalctl -o field --field=FIELD_NAME

高级操作

journalctl --disk-usage 查看日志占用磁盘大小

#查看本次启动的所有日志
journalctl  -b 
journalctl --list-boots  查看每一次启动的分割
journalctl  -b -1 上一次启动的日志

查看内核消息:
journalctl -k

时间查询

查看指定时间范围内的日志消息:
journalctl --since "<起始时间>" --until "<结束时间>"
#查询开始时间
journalctl --since="2019-11-27 14:21:00"
查询一个时间段范围内的日志
journalctl --since="2019-11-27 14:21:00" --until="2019-11-27 14:30:00"

滚动查看

 journalctl -f 
 journal | grep 'foo'