journalctl
命令是Systemd
日志系统的一个命令,主要用途是用来查看通过Systemd
日志系统记录的日志。在Systemd
出现之前,Linux
系统及各应用的日志都是分别管理的,Systemd
开始统一管理了所有Unit
的启动日志,这样带来的好处就是可以只用一个 journalctl
命令,查看所有内核和应用的日志。
1. 基础用法
1.1 查看所有日志
不用添加任何任何参数运行可以查看本次启动以来的所有日志。
1# 显示本次启动以来的全部日志
2journalctl
1.2 查看内核日志
使用-k
参数可以查看内核日志。
1# 显示内核日志
2journalctl -k
1.3 显示最后n行日志
使用-n
参数可以显示最后n行日志,如果不指定行数,默认显示10行。
1# 显示最后10行日志
2journalctl -n
3# 显示最后100行日志
4journalctl -n 100
1.4 显示最近一段时间的日志
使用-S
或--since
参数:
1# 显示最近30分钟以来的日志
2journalctl --since="30 minutes ago"
3journalctl --since=-30m
4# 显示自2020-04-21 00:00:00以来的日志
5journalctl --since="2020-04-21"
6# 显示今天以来的日志
7journalctl --since=today
1.5 跟踪最近的日志
使用-f
参数可以实现类型tail -f
的功能,持续监控最新的日志:
1# 跟踪最近的日志
2journalctl -f
1.6 查看指定Unit的日志
使用-u
参数,可以指定特定的unit
(Systemd的概念,类似于服务)。例如:
1# 查看sshd的日志
2> journalctl -u sshd
3-- Logs begin at Tue 2019-11-12 20:18:40 CST, end at Fri 2020-04-17 17:45:01 CST. --
4-- No entries --
1.7 不进行分页显示
默认情况下,显示结果是进行分页显示的。可以使用-no-pager
参数去掉分页功能。如果需要使用管道功能,去掉分页是非常有必要的。
2. 维护
2.1 查看日志占用的磁盘空间
使用--disk-usage
参数。例如:
1# 查看日志占用的空间
2> journalctl --disk-usage
3Archived and active journals take up 560.0M in the file system.
2.2 按照占用空间清理日志
1> journalctl --disk-usage
2Archived and active journals take up 350.2M on disk.
3# 清理日志,保留300M的日志
4> journalctl --vacuum-size 200M
5Deleted archived journal /run/log/journal/f94ba353537a4b3f954e3e875225d5d1/system@3064ddfc68cd4fae887e5834914cdce8-000000000027a69c-0005a2067cb4d733.journal (48.8M).
6Deleted archived journal /run/log/journal/f94ba353537a4b3f954e3e875225d5d1/system@3064ddfc68cd4fae887e5834914cdce8-000000000028a54d-0005a21c57b95ba9.journal (48.8M).
7Deleted archived journal /run/log/journal/f94ba353537a4b3f954e3e875225d5d1/system@3064ddfc68cd4fae887e5834914cdce8-000000000029d3a2-0005a239670d6298.journal (48.8M).
8Vacuuming done, freed 146.6M of archived journals on disk.
2.3 按照日志时间清理日志
1# 清理一个周前的日志
2> journalctl --vacuum-time=1week
3Deleted archived journal /run/log/journal/f94ba353537a4b3f954e3e875225d5d1/system@3064ddfc68cd4fae887e5834914cdce8-00000000002b03ce-0005a258817ead63.journal (48.8M).
4Deleted archived journal /run/log/journal/f94ba353537a4b3f954e3e875225d5d1/system@3064ddfc68cd4fae887e5834914cdce8-00000000002c0f37-0005a2e4f7cb5b8f.journal (48.8M).
5Vacuuming done, freed 97.7M of archived journals on disk.
3. 配置
配置文件在/etc/systemd/journald.conf
。可能会用到的配置项有:
1# 配置日志系统占用的最大空间。可以实现类似2.2的功能
2SystemMaxUse=500M
3# 定义单个日志文件的大小。最大128M
4SystemMaxFileSize=100M
5# 定义最大日志文件数目。最大100个
6SystemMaxFiles=5
7# 定义日志文件最多保存1个月
8MaxRetentionSec=1month