注:只针对RHEL7系列系统 ~
Systemd 统一管理所有 Unit 的启动日志。带来的好处就是,可以只用journalctl一个命令,查看所有日志(内核日志和应用日志)。
日志的配置文件是/etc/systemd/journald.conf。平常我们查看启动日志只能查看本次启动的日志,上一次的无法查看就是这里需要修改,下面会简单介绍一下。
journalctl功能强大,用法非常多。
查看所有日志(默认情况下 ,只保存本次启动的日志)
journalctl
查看内核日志(不显示应用日志)
journalctl -k
查看系统本次启动的日志
journalctl -b
journalctl -b -0
查看上一次启动的日志(需更改设置)
journalctl -b -1
这里就需要修改文章开头提到的配置文件了~/etc/systemd/journald.conf
否则你会看到这样的提示信息:
########################分隔符############################
所以我们需要将systemd-journald服务配置为在重新启动后永久保留系统日志,只需要将Storage参数设置为persistent。
Storage参数设置值有:
1、persistent:将日志存储在/var/log/journal目录中,该目录在重新启动后仍然存在。
2、volatile:将日记存储在volatile/run/log/journal目录中,这不会导致系统重启。
3、auto:rsyslog将确定使用持久性存储(persistent)还是易失性存储(volatile),如果存在/var/log/journal目录,则rsyslog使用持久性存储,否则使用易失性存储。
对于永久存储,请将其设置为:
[Journal]
Storage=persistent
提交更改后,重新启动systemd-journald服务以使配置更改生效:
systemctl restart systemd-journald
确认服务已重新启动并正在运行:
$ systemctl status systemd-journald
########################分隔符############################
重启系统,然后再查看:
若要检查上一次引导的日志,请使用-b参数筛选日记。没有任何争论,-b选项仅显示上次引导后的消息。它以负数作为参数,显示以前引导的日志。
journalctl -b -1 -p err
查看指定时间的日志
journalctl --since=“2021-09-16 14:22:02”
journalctl --since “30 min ago”
journalctl --since yesterday
journalctl --since “2021-01-01” --until “2021-09-16 13:40”
journalctl --since 07:30 --until “2 hour ago”
显示尾部的最新10行日志
journalctl -n
显示尾部指定行数的日志
journalctl -n 15
实时滚动显示最新日志
journalctl -f
与tail -f类似
查看指定服务的日志
journalctl /usr/lib/systemd/systemd
比如查看docker服务的日志
systemctl status docker
查看指定进程的日志
journalctl _PID=665
查看某个路径的脚本的日志
journalctl /usr/bin/bash
查看指定用户的日志
journalctl UID=33 --since today
查看某个 Unit 的日志
journalctl -u nginx.service
journalctl -u nginx.service --since today
实时滚动显示某个 Unit 的最新日志
journalctl -u nginx.service -f
合并显示多个 Unit 的日志
$ journalctl -u nginx.service -u php-fpm.service --since today
查看指定优先级(及其以上级别)的日志,共有8级
0: emerg
1: alert
2: crit
3: err
4: warning
5: notice
6: info
7: debug
若要检查上一次引导的日志,请使用-b参数筛选日记。没有任何争论,-b选项仅显示上次引导后的消息。它以负数作为参数,显示以前引导的日志。
journalctl -p err -b warning
日志默认分页输出,–no-pager 改为正常的标准输出
journalctl --no-pager
以 JSON 格式(单行)输出
journalctl -b -u nginx.service -o json
以 JSON 格式(多行)输出,可读性更好
journalctl -b -u nginx.serviceqq -o json-pretty
显示日志占据的硬盘空间
journalctl --disk-usage
指定日志文件占据的最大空间,默认为8M
journalctl --vacuum-size=1G
指定日志文件保存多久
journalctl --vacuum-time=1years