CentOS7日志文件及journalctl日志如何查看

作者:有用网 阅读量:259 发布时间:2023-10-18
关键字 CentOS

这篇文章主要介绍了CentOS7日志文件及journalctl日志如何查看的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇CentOS7日志文件及journalctl日志如何查看文章都会有所收获,下面我们一起来看看吧。

日志文件说明

tail /var/log/messages          //系统启动后的信息和错误日志,是Red Hat Linux中最常用的日志之一
tail -f /var/log/secure         //与安全相关的日志信息
tail /var/log/maillog           //与邮件相关的日志信息
tail /var/log/cron              //与定时任务相关的日志信息
tail /var/log/dmesg             //和系统启动相关
tail /var/log/audit/audit.log   //系统审计日志
tail /var/log/yum.log           //yum
tail /var/log/xferlog           //和访问FTP服务器相关
tail /var/log/wtmp             //当前登录的用户(命令:w)
tail /var/log/btmp             //最近登录的用户(命令last)
tail /var/log/lastlog          //所有用户的登录情况(命令lastlog )
tail /var/log/boot.log         //守护进程启动和停止相关的日志消息
tail /var/log/spooler          //与UUCP和news设备相关的日志信息
#清理日志文件
cat /dev/null > /var/log/boot.log
cat /dev/null > /var/log/btmp
cat /dev/null > /var/log/cron
cat /dev/null > /var/log/dmesg
cat /dev/null > /var/log/firewalld
cat /dev/null > /var/log/grubby
cat /dev/null > /var/log/lastlog
cat /dev/null > /var/log/mail.info
cat /dev/null > /var/log/maillog
cat /dev/null > /var/log/messages
cat /dev/null > /var/log/secure
cat /dev/null > /var/log/spooler
cat /dev/null > /var/log/syslog
cat /dev/null > /var/log/tallylog
cat /dev/null > /var/log/wpa_supplicant.log
cat /dev/null > /var/log/wtmp
cat /dev/null > /var/log/yum.log

1、概述

日志管理工具journalctl是centos7上专有的日志管理工具,该工具是从message这个文件里读取信息。

Systemd统一管理所有Unit的启动日志。带来的好处就是,可以只用journalctl一个命令,查看所有日志(内核日志和应用日志)。

日志的配置文件是/etc/systemd/journald.conf。

2、查看所有日志

#(默认情况下 ,只保存本次启动的日志)
[root@CENTOS57 proc]# journalctl

3、查看内核日志

(不显示应用日志)
[root@CENTOS57 proc]# journalctl -k

4、查看系统本次启动的日志

journalctl -b
#或者
journalctl -b -0
#或者
journalctl -b 0

5、查看上一次启动的日志

需要修改配置文件 /etc/systemd/journald.conf

[root@CENTOS57 proc]# journalctl -b -1

否则你会看到这样的提示信息:

CentOS7日志文件及journalctl日志如何查看

所以我们需要将systemd-journald服务配置为在重新启动后永久保留系统日志,只需要将Storage参数设置为persistent。

Storage参数设置值有:

  • 1、

    persistent
    :将日志存储在/var/log/journal目录中,该目录在重新启动后仍然存在。
  • 2、

    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

要查看journald知道的引导,请使用以下–list-boots选项:

 [root@centos7 ~]# journalctl --list-boots 
    -1 00d066e11cbee123b5 Thu 2018-02-22 17:01:47 CST―Thu 2018-02-22 17:09:15 CST
     0 63f75abbe94c3b5710 Thu 2018-02-22 17:09:10 CST―Thu 2018-02-22 17:10:19 CST

这将为每次启动显示一行。第一列是启动的偏移量,可用于轻松引用启动journalctl。

如果您需要绝对参考,则启动ID位于第二列。您可以通过在结束时列出的两个时间规范来指出引导会话引用的时间。

6、查看指定时间的日志

可以使用–since和–until选项过滤任意时间限制,这些限制分别显示给定时间之前或之后的条目。

可以使用“yesterday”、“today”、“tomorrow”或者“now”等表达。

另外,我们也可以使用“-”或者“+”设定相对值,或者使用“ago”之前的表达。

#"显示2017年10月30号,18点10分30秒到当前时间之间的所有日志信息"
journalctl --since="2017-10-30 18:10:30"

#获取昨天的日志如下:
journalctl --since yesterday

#获取某一个时间段到当前时间的前一个小时的日志
journalctl --since 09:00 --until "1 hour ago" 

#获取当前时间的前20分钟的日志
journalctl --since "20 min ago"

#获取某一天到某一个时间段的日志信息
journalctl --since "2017-01-10" --until "2017-01-11 03:00" 

#获取15:15到现在的日志
journalctl --since"15:15" --until now

7、按服务过滤消息日志

#查看httpd服务的日志信息
[root@centos7 ~]# journalctl -u httpd.service 
-- Logs begin at Thu 2018-02-22 17:01:47 CST, end at Thu 2018-02-22 17:30:01 CST. --
Feb 22 17:29:27 centos7.localdomain systemd[1]: Starting The Apache HTTP Server...
Feb 22 17:29:27 centos7.localdomain httpd[1610]: AH00558: httpd: Could not reliably determine t
Feb 22 17:29:28 centos7.localdomain systemd[1]: Started The Apache HTTP Server.

#查看httpd服务当天的运行状况
[root@centos7 ~]# journalctl -u httpd.service --since today

8、按进程、用户或者群组ID

#通过进程ID实现查询,需要指定_PID字段。
journalctl _PID=8088

#查看指定用户的日志
journalctl _UID=33  --since today

#查看指定用户组的日志
journalctl _GID=20  --since today

#显示尾部的最新10行日志
journalctl  -n

#显示尾部指定行数的日志
journalctl -n 20

#实时滚动显示最新日志
journalctl -f

#查看指定服务的日志
journalctl  /usr/lib/systemd/systemd

#查看某个路径的脚本的日志
journalctl    /usr/bin/bash

#实时滚动显示某个Unit的最新日志
journalctl  -u nginx.service  -f

#合并显示多个Unit的日志
journalctl  -u nginx.service  -u php-fpm.service  --since today

9、按优先级

使用journalctl配合-p选项显示特定优先级的信息,从而过滤掉优先级较低的信息。

由最高到最低优先级:

  • 0: emerg

  • 1: alert

  • 2: crit

  • 3: err

  • 4: warning

  • 5: notice

  • 6: info

  • 7: debug

只显示错误级别或者更高的日志条目:
[root@centos7 ~]# journalctl -p err -b
-- Logs begin at Thu 2018-02-22 17:01:47 CST, end at Thu 2018-02-22 17:40:02 CST. --
Feb 22 17:09:10 centos7.localdomain kernel: sd 0:0:0:0: [sda] Assuming drive cache: write throu
Feb 22 17:09:12 centos7.localdomain kernel: piix4_smbus 0000:00:07.3: SMBus Host Controller not
Feb 22 17:09:15 centos7.localdomain rsyslogd[593]: error during parsing file /etc/rsyslog.conf,
Feb 22 17:09:47 centos7.localdomain pulseaudio[1232]: [alsa-sink-ES1371/1] alsa-sink.c: ALSA wo
Feb 22 17:09:47 centos7.localdomain pulseaudio[1232]: [alsa-sink-ES1371/1] alsa-sink.c: Most li
Feb 22 17:09:47 centos7.localdomain pulseaudio[1232]: [alsa-sink-ES1371/1] alsa-sink.c: We were
Feb 22 17:09:48 centos7.localdomain spice-vdagent[1274]: Cannot access vdagent virtio channel /
lines 1-8/8 (END)
或者[root@centos7 ~]# journalctl -p 3 -b

10、输出格式

#journal能够以多种格式进行显示,只须添加-o选项加格式说明即可。
#将journal条目输出为JSON格式:
[root@CENTOS57 proc]# journalctl -b -u httpd -o json
{ "__CURSOR" : "s=54b7b8c9391c4489a9a206c9123e723b;i=7db;b=b2d84e8bf26a462e9639384e1c0be5cf;m=eddf635;t=5b3a0187d82cb;x=90ce86876890254e", "__REALTIME_TIMESTAMP" : "160
{ "__CURSOR" : "s=54b7b8c9391c4489a9a206c9123e723b;i=7f2;b=b2d84e8bf26a462e9639384e1c0be5cf;m=ee4987b;t=5b3a018842511;x=a984025285f8f913", "__REALTIME_TIMESTAMP" : "160
{ "__CURSOR" : "s=54b7b8c9391c4489a9a206c9123e723b;i=7f3;b=b2d84e8bf26a462e9639384e1c0be5cf;m=ee5a191;t=5b3a018852e27;x=c0c8530ea7133468", "__REALTIME_TIMESTAMP" : "160
#使用json-pretty格式以更好地处理数据结构
[root@CENTOS57 proc]#  journalctl -u httpd -o  json-pretty
{
        "__CURSOR" : "s=54b7b8c9391c4489a9a206c9123e723b;i=7db;b=b2d84e8bf26a462e9639384e1c0be5cf;m=eddf635;t=5b3a0187d82cb;x=90ce86876890254e",
        "__REALTIME_TIMESTAMP" : "1604875070571211",
        "__MONOTONIC_TIMESTAMP" : "249427509",
        "_BOOT_ID" : "b2d84e8bf26a462e9639384e1c0be5cf",
        "PRIORITY" : "6",
        "_UID" : "0",
        "_GID" : "0",
        "_MACHINE_ID" : "9e19325de3e04e56b869967ea97e8dae",
        "SYSLOG_FACILITY" : "3",
        "SYSLOG_IDENTIFIER" : "systemd",
        "_TRANSPORT" : "journal",
        "_PID" : "1",
        "_COMM" : "systemd",
        "_EXE" : "/usr/lib/systemd/systemd",
        "_CAP_EFFECTIVE" : "1fffffffff",
        "_SYSTEMD_CGROUP" : "/",
        "CODE_FILE" : "src/core/unit.c",
        "CODE_LINE" : "1417",
        "CODE_FUNCTION" : "unit_status_log_starting_stopping_reloading",
        "MESSAGE_ID" : "7d4958e842da4a758f6c1cdc7b36dcc5",
        "_HOSTNAME" : "CENTOS57",
        "_CMDLINE" : "/usr/lib/systemd/systemd --switched-root --system --deserialize 21",
        "UNIT" : "httpd.service",
        "MESSAGE" : "Starting The Apache HTTP Server...",
        "_SOURCE_REALTIME_TIMESTAMP" : "1604875070570852"
}
以下为可用于显示的各类格式:
    cat: 只显示信息字段本身。
    export: 适合传输或备份的二进制格式。
    json: 标准JSON,每行一个条目。
    json-pretty: JSON格式,适合人类阅读习惯。
    json-sse: JSON格式,经过打包以兼容server-sent事件。
    short: 默认syslog类输出格式。
    short-iso: 默认格式,强调显示ISO 8601挂钟时间戳。
    short-monotonic: 默认格式,提供普通时间戳。
    short-precise: 默认格式,提供微秒级精度。
    verbose: 显示该条目的全部可用journal字段,包括通常被内部隐藏的字段。

11、journal维护

#查看当前日志占用磁盘的空间的总大小
[root@centos7 ~]# journalctl --disk-usage 
Archived and active journals take up 8.0M on disk.

#指定日志文件最大空间
journalctl --vacuum-size=1G

#指定日志文件保存多久
journalctl --vacuum-time=1years #1年
journalctl --vacuum-time=2d     #2天
journalctl --vacuum-size=500M   #500M
#不分页标准输出,日志默认分页输出--no-pager改为正常的标准输出
journalctl  --no-pager

#分页显示,其中插入省略号以代表被移除的信息,使用

#发表评论
提交评论