基本用法
查看日志
查看所有日志
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
journalctl --since "2024-09-03" --until "2024-09-04"
查看特定服务的实时日志
1
journalctl -u apache2 -f
查看包含特定关键字的日志
1
journalctl | grep "ERROR"
限制日志条目数量
1
journalctl -n 50
查看系统启动日志
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
2Storage=persistent
SystemMaxUse=2G配置日志存储为内存模式,限制总大小为 500MB
1
2Storage=volatile
RuntimeMaxUse=500M设置日志文件最大大小为 50MB
1
SystemMaxFileSize=50M




