journalctl¶
一、journalctl概述¶
journalctl
是 systemd
提供的日志查看工具,用于查看和管理 systemd-journald
维护的日志。它比传统的 syslog
方式更强大,能够按时间、服务、用户等多种方式筛选和过滤日志。
二、journalctl选项说明¶
选项 | 说明 |
---|---|
-a , --all |
显示所有日志条目,包括可能被截断的长消息 |
-b , --boot |
显示当前或指定启动的日志 |
-c |
兼容旧版 journalctl (已废弃) |
-D , --directory |
指定其他日志目录 |
--disk-usage |
显示日志占用的磁盘空间 |
--flush |
强制刷新日志数据到持久存储 |
-e |
跳转到最新日志条目 |
-f , --follow |
实时跟踪日志(类似 tail -f ) |
-h , --help |
显示帮助信息 |
-k , --dmesg |
仅显示内核日志(类似 dmesg ) |
-m , --merge |
合并多个日志目录的数据 |
-n , --lines |
显示最近的 N 行日志(默认 10 行) |
-o , --output |
指定日志输出格式(json、short、verbose 等) |
-p , --priority |
按日志级别筛选(0-7,对应 emergency 到 debug) |
-q , --quiet |
静默模式(减少输出) |
-r , --reverse |
逆序显示日志(最新的在前) |
-u , --unit |
仅显示指定 systemd 单元的日志 |
-x |
显示附加的解释信息 |
--after-cursor |
仅显示游标之后的日志 |
--before-cursor |
仅显示游标之前的日志 |
--field |
显示日志可用的字段名称 |
--identifier |
仅显示指定标识符的日志 |
--list-boots |
显示系统启动的时间索引 |
--new-id128 |
生成新的 journal 标识符 |
--no-pager |
禁用分页输出 |
--setup-keys |
设置 FSS 密钥,用于加密日志 |
--since |
显示指定时间之后的日志 |
--until |
显示指定时间之前的日志 |
--utc |
以 UTC 时间显示日志 |
--verify |
检查日志文件完整性 |
--version |
显示 journalctl 版本 |
--this-boot |
仅显示当前启动的日志 |
--user |
显示当前用户的日志 |
--system |
显示系统日志 |
--no-tail |
显示完整日志,不进行自动滚动 |
三、journalctl
的主要用途:¶
- 查看系统日志
显示所有系统日志,默认按照时间顺序排列。
- 查看最新日志(实时刷新)
类似 tail -f /var/log/messages
,实时滚动显示最新日志。
- 按时间筛选日志
Bash
journalctl --since "2025-03-20 10:00:00"
journalctl --since "1 hour ago"
journalctl --since yesterday --until today
显示特定时间范围的日志。
- 按服务筛选日志
仅查看某个 systemd
服务的日志。
- 按优先级筛选日志
只查看 err
级别以上的错误日志。
- 查看系统最近一次启动的日志
-b -1
查看上次启动日志,-b -2
查看上上次启动日志。
- 查看特定进程(PID)的日志
只显示 PID=1234
的进程日志。
- 按用户筛选日志
只查看 UID=1000
用户的日志。
- 查看内核日志(dmesg 替代品)
仅显示内核日志。
-
导出日志到文件
将
zabbix_server
的日志导出到zabbix.log
。 -
清理日志
限制日志大小或保留 10 天的日志。