Systemd 统一管理所有 Unit 的启动日志。带来的好处就是,可以只用journalctl
一个命令,查看所有日志(内核日志和应用日志)。日志的配置文件是/etc/systemd/journald.conf
。
Systemd 的日志文件是二进制格式的,必须使用 Journald 提供的 journalctl 来查看,默认不带任何参数时会输出系统和所有后台进程的混合日志。
默认日志最大限制为所在文件系统容量的 10%,可以修改 /etc/systemd/journald.conf 中的 SystemMaxUse 来指定该最大限制。
1. 配置文件
默认状态所有选项均为注释状态
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| [Journal] Storage=auto Compress=yes Seal=yes SplitMode=uid SyncIntervalSec=5m RateLimitInterval=30s RateLimitBurst=1000 SystemMaxUse= SystemKeepFree= SystemMaxFileSize= RuntimeMaxUse= RuntimeKeepFree= RuntimeMaxFileSize= MaxRetentionSec= MaxFileSec=1month ForwardToSyslog=yes ForwardToKMsg=no ForwardToConsole=no ForwardToWall=yes TTYPath=/dev/console MaxLevelStore=debug MaxLevelSyslog=debug MaxLevelKMsg=notice MaxLevelConsole=info MaxLevelWall=emerg LineMax=48K
|
2. 命令
2.1 查看日志
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| $ sudo journalctl
$ sudo journalctl -n
$ sudo journalctl -n 20
$ sudo journalctl -f
$ sudo journalctl --since="2012-10-30 18:17:16" $ sudo journalctl --since "20 min ago" $ sudo journalctl --since yesterday $ sudo journalctl --since "2015-01-10" --until "2015-01-11 03:00" $ sudo journalctl --since 09:00 --until "1 hour ago"
$ sudo journalctl -k
$ sudo journalctl -b $ sudo journalctl -b -0
$ sudo journalctl -b -1
$ sudo journalctl -p err -b
|
2.2 查看指定服务日志
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| $ sudo journalctl /usr/lib/systemd/systemd
$ sudo journalctl _PID=1
$ sudo journalctl /usr/bin/bash
$ sudo journalctl _UID=33 --since today
$ sudo journalctl -u nginx.service $ sudo journalctl -u nginx.service --since today
$ sudo journalctl -u nginx.service -f
$ journalctl -u nginx.service -u php-fpm.service --since today
|
2.3 格式查看
1 2 3 4 5 6 7 8 9
| $ sudo journalctl --no-pager
$ sudo journalctl -b -u nginx.service -o json
$ sudo journalctl -b -u nginx.serviceqq -o json-pretty
|
2.4 查看存储
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| $ sudo journalctl --disk-usage
$ sudo journalctl --vacuum-size=500M
$ sudo journalctl --vacuum-time=1years
$ sudo journalctl --vacuum-time=1m
$ sudo journalctl --vacuum-time=2d
|
3. 参考资料