0%

使用journalctl查看日志

systemd-journald 是 systemd 自带的日志系统,是一个收集并存储各类日志数据的系统服务。 它创建并维护一个带有索引的、结构化的日志数据库, 并可以收集来自各种不同渠道的日志:

  1. 通过 kmsg 收集内核日志
  2. 通过 libc 的 syslog(3) 接口收集系统日志
  3. 通过 本地日志接口 sd_journal_print(3) 收集结构化的系统日志
  4. 捕获服务单元的标准输出(STDOUT)与标准错误(STDERR)。
  5. 通过内核审计子系统收集审计记录

日志守护进程会以安全且不可伪造的方式自动收集每条日志的元数据。

journalctl基本操作

查看主机本次启动后的所有日志

1
journalctl

只查看本机内核日志

1
journalctl -k

查看本机启动日志

1
2
journalctl -b -0 #本次启动
journalctl -b -1 #上一次启动

查看最新指定行数(20行)日志

1
journalctl -n 20

跟踪实时日志

1
journalctl -f

指定日志倒序输出:最新的在上面,从新到旧

1
journalctl -r

查看某个unit的日志(sshd.service)

1
2
journalctl -u sshd.service
journalctl -u nginx.service -u mysqld.service

查看指定时间之后的日志

–since 指定开始时间

–until 指定结束时间

1
2
3
4
5
6
7
8
9
10
11
12
journalctl -u mysqld.service --since today
journalctl -u sshd.service --since "2021-09-30 09:00" --until now
journalctl -u sshd.service --since "2021-09-30 09:00" --until "2021-09-30 10:00"

[root@s1 ~]# journalctl -u sshd.service --since "2021-09-30 09:00" --until "2021-09-30 10:00"
-- Logs begin at Thu 2021-09-30 09:49:15 CST, end at Thu 2021-09-30 10:39:52 CST. --
9月 30 09:49:35 s1.ths.com.cn systemd[1]: Starting OpenSSH server daemon...
9月 30 09:49:36 s1.ths.com.cn sshd[1091]: Server listening on 0.0.0.0 port 22.
9月 30 09:49:36 s1.ths.com.cn sshd[1091]: Server listening on :: port 22.
9月 30 09:49:36 s1.ths.com.cn systemd[1]: Started OpenSSH server daemon.
9月 30 09:49:41 s1.ths.com.cn sshd[1314]: Accepted password for root from 192.168.111.1 port 12424 ssh2
9月 30 09:49:41 s1.ths.com.cn sshd[1314]: pam_unix(sshd:session): session opened for user root by (uid=0)

查看指定级别的日志

1
2
3
4
5
6
7
8
9
说明:日志的八个级别:
# 0: emerg
# 1: alert
# 2: crit
# 3: err
# 4: warning
# 5: notice
# 6: info
# 7: debug
1
2
3
[root@s1 ~]# journalctl -p err -k
-- Logs begin at Thu 2021-09-30 09:49:15 CST, end at Thu 2021-09-30 10:39:07 CST. --
9月 30 09:49:27 s1.ths.com.cn kernel: piix4_smbus 0000:00:07.3: SMBus Host Controller not enabled!

查看指定用户id的日志(oracle用户UID=600)

1
journalctl _UID=600

日志清理

1
2
3
4
5
6
7
8
9
10
# 清理现有的日志文件
rm -rf /var/log/journal/*
#重启systemd-journald服务
systemctl restart systemd-journald.service
#显示日志占据的硬盘空间
journalctl --disk-usage
#清理现有的日志到500M以下
journalctl --vacuum-size=500M
#清理现有的日志到12个月以下
journalctl --vacuum-time=12month

参考:https://www.cnblogs.com/architectforest/p/12665080.html