CentOS 7.x环境journal命令的使用

时间 : 19-05-23 栏目 : linux精讲 作者 : 老薛 评论 : 3 点击 : 602 次

在CentOS 7.X中,systemd管理所有单元的启动日志。

Systemd-journald是systemd管理的渐进式日志管理服务,它从内核收集日志,系统守护程序在系统的早期启动阶段启动并运行,标准输出和错误消息,以及系统日志的日志。

journalctl日志路径
日志服务仅将日志文件保存在单个结构中。

journalctl日志的保存路径 /var/log/journal
因为日志是压缩和格式化的二进制数据,所以在查看和定位非常快。


journalctl查看日志命令

[root@CentOS7 ~]# journalctl
-- Logs begin at Thu 2019-04-18 19:00:58 CST, end at Thu 2019-05-23 13:32:43 CST. --
Apr 18 19:00:58 CentOS7.2 systemd-journal[347]: Runtime journal is using 8.0M (max allowed 3.1G, trying to leave 4.0G free of 31.3G 
Apr 18 19:00:58 CentOS7.2 systemd-journal[347]: Runtime journal is using 8.0M (max allowed 3.1G, trying to leave 4.0G free of 31.3G 
Apr 18 19:00:58 CentOS7.2 kernel: CPU0 microcode updated early to revision 0x428, date = 2014-05-29
Apr 18 19:00:58 CentOS7.2 kernel: Initializing cgroup subsys cpuset
Apr 18 19:00:58 CentOS7.2 kernel: Initializing cgroup subsys cpu
Apr 18 19:00:58 CentOS7.2 kernel: Initializing cgroup subsys cpuacct
Apr 18 19:00:58 CentOS7.2 kernel: Linux version 3.10.0-327.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.3 20140911 
Apr 18 19:00:58 CentOS7.2 kernel: Command line: BOOT_IMAGE=/vmlinuz-3.10.0-327.el7.x86_64 root=UUID=0b2df8cd-c245-471f-8db6-2d70abaa
Apr 18 19:00:58 CentOS7.2 kernel: e820: BIOS-provided physical RAM map:
Apr 18 19:00:58 CentOS7.2 kernel: BIOS-e820: [mem 0x0000000000000000-0x000000000009dfff] usable
Apr 18 19:00:58 CentOS7.2 kernel: BIOS-e820: [mem 0x0000000000100000-0x00000000cd2effff] usable
Apr 18 19:00:58 CentOS7.2 kernel: BIOS-e820: [mem 0x00000000cd2f0000-0x00000000cd31bfff] reserved
Apr 18 19:00:58 CentOS7.2 kernel: BIOS-e820: [mem 0x00000000cd31c000-0x00000000cd35afff] ACPI data
Apr 18 19:00:58 CentOS7.2 kernel: BIOS-e820: [mem 0x00000000cd35b000-0x00000000cfffffff] reserved
Apr 18 19:00:58 CentOS7.2 kernel: BIOS-e820: [mem 0x00000000e0000000-0x00000000efffffff] reserved
Apr 18 19:00:58 CentOS7.2 kernel: BIOS-e820: [mem 0x00000000fe000000-0x00000000ffffffff] reserved
Apr 18 19:00:58 CentOS7.2 kernel: BIOS-e820: [mem 0x0000000100000000-0x000000102fffffff] usable
Apr 18 19:00:58 CentOS7.2 kernel: NX (Execute Disable) protection: active
Apr 18 19:00:58 CentOS7.2 kernel: SMBIOS 2.7 present.
Apr 18 19:00:58 CentOS7.2 kernel: DMI: Dell Inc. PowerEdge R720xd/068CDY, BIOS 2.4.3 07/09/2014
Apr 18 19:00:58 CentOS7.2 kernel: e820: update [mem 0x00000000-0x00000fff] usable ==> reserved
Apr 18 19:00:58 CentOS7.2 kernel: e820: remove [mem 0x000a0000-0x000fffff] usable
Apr 18 19:00:58 CentOS7.2 kernel: AGP: No AGP bridge found
Apr 18 19:00:58 CentOS7.2 kernel: e820: last_pfn = 0x1030000 max_arch_pfn = 0x400000000
Apr 18 19:00:58 CentOS7.2 kernel: MTRR default type: uncachable
Apr 18 19:00:58 CentOS7.2 kernel: MTRR fixed ranges enabled:
Apr 18 19:00:58 CentOS7.2 kernel:   00000-9FFFF write-back
Apr 18 19:00:58 CentOS7.2 kernel:   A0000-BFFFF uncachable
Apr 18 19:00:58 CentOS7.2 kernel:   C0000-C7FFF write-protect
Apr 18 19:00:58 CentOS7.2 kernel:   C8000-CFFFF write-back
Apr 18 19:00:58 CentOS7.2 kernel:   D0000-EBFFF uncachable
Apr 18 19:00:58 CentOS7.2 kernel:   EC000-FFFFF write-protect

这基本上没用,因为你马上会被如洪水般的日志记录“淹没”,让你感到不堪重负。

查看指定时间段journalctl日志
使用以下命令选项,设置时间段 
--since
--until

时间段负责指定给定时间之前和之后的日志记录。
时间值可以采用多种格式,例如以下格式
YYYY-MM-DD HH:MM:SS
如果你想检查在2018年3月8日晚上8点20分之后日志,请输入以下命令

journalctl --since "2019-04-26 20:20:00"

如果未填写上述格式的某些组件,系统将直接填充默认值。
例如,如果未填充日期部分,则直接显示当前日期。
如果未填充时间部分,则默认使用“00:00:00”(午夜)。
秒字段也可以留空。
默认值为“00”,例如以下命令 

journalctl --since "2019-04-26" --until "2019-04-26 03:00"
此外,journalctl还可以理解一些相对值和命名简写。

例如,你可以使用"yesterday"、"today"、"tomorrow"或"now"。
例如,要获取昨天的日志数据,可以使用以下命令

journalctl --since yesterday
要从上午9:00到最后一小时获取日志,可以使用以下命令

journalctl --since 09:00 --until "1 hour ago"
实时更新查看journalctl日志
跟 tail -f 命令类似,journalctl支持-f选项,以便实时显示日志

journalctl -f
如果想查看设备的实时日志,请添加-u选项 

$ sudo journalctl -f -u prometheus.service
仅显示最journalctl 新的n行
命令行选项 -n 用于仅控制最新的n行日志。

默认是在最后显示最新的10行日志

$ sudo journalctl -n
你还可以在末尾显示指定行数的日志

$ sudo journalctl -n 20
以下是显示cron.service服务的最新三行日志

$ journalctl -u cron.service -n 3

查看journalctl日志使用容量命令
检查当前 journalctl 日志使用磁盘容量命令 ▼

journalctl --disk-usage
journalctl清空删除日志
由于Linux是一个非常敏感的操作系统,若删除文件错误,很容易造成系统崩溃。

所以,清理journalctl日志的方法,请按日期、允许保留的容量进行删除。

journalctl --vacuum-time=2d
journalctl --vacuum-size=500M
如果要手动删除日志文件,则需要在删除之前轮转(循环)日志。

systemctl kill --kill-who=main --signal=SIGUSR2 systemd-journald.service
journalctl配置持久性容量
要启用日志限制持久性配置,你可以修改journald的配置文件

/etc/systemd/journald.conf

SystemMaxUse=16M

ForwardToSyslog=no
然后,重启journald 

systemctl restart systemd-journald.service
检查日志是否如常?日志文件是否完好且未损坏?

journalctl --verify


CentOS 7.x环境journal命令的使用讲解告一段落,谢谢!

本文标签

除非注明,文章均为( 老薛 )原创,转载请保留链接: http://www.bdkyr.com/operation/2883.html

CentOS 7.x环境journal命令的使用:目前有3 条留言

  1. Post: 2019-06-23 下午10:29

    文章不错非常喜欢 :cool:

  2. 沙发
    556486
    Post: 2019-08-10 上午12:51

    文章不错支持一下吧

    • 老薛
      老薛
      Post: 2019-08-23 下午1:58

      谢谢啦!

发表评论

7 + 2 = ?


博主微信号,很高兴为您提供帮助

随便看看

为您推荐

3