Linux系统拥有十分强大且灵活的日志系统,用于保存几乎所有的操作记录和服务运行状态,并且按照“报错”“警告”“提示”和“其他”等标注进行了分类。

运维管理员可以根据所需的信息进行检索,快速找出想要的信息,因此对于了解系统运行状态有着不错的帮助作用。

在RHEL 8系统中,默认的日志服务程序是rsyslog。可以将rsyslog理解成之前的syslogd服务的增强版本,它更加注重日志的安全性和性能指标。

为了便于日后的检索,不同的日志信息会被写入到不同的文件中。在Linux系统中,常见的日志文件如下所示。

常见的日志文件保存路径

文件路径及命令                                 作用

/var/log/boot.log

/var/log/lastlog                 用户登录成功时间、终端名称及IP地址等信息

/var/log/btmp                   记录登录失败的时间、终端名称及IP地址等信息

/var/log/messages            系统及各个服务的运行和报错信息

/var/log/secure

/var/log/wtmp

在日常工作中,/var/log/message这个综合性的文件用得最多。

在处理Linux系统中出现的各种故障时,一般是最先发现故障的症状,而找到故障的原因则一定离不开日志信息的帮忙。

 

从理论上讲,日志文件分为下面3种类型。

系统日志:主要记录系统的运行情况和内核信息。

用户日志:主要记录用户的访问信息,包含用户名、终端名称、登入及退出时间、来源IP地址和执行过的操作等。

程序日志:稍微大一些的服务一般都会保存一份与其同名的日志文件,里面记录着服务运行过程中各种事件的信息;每个服务程序都有自己独立的日志文件,且格式相差较大。

journalctl命令用于检索和管理系统日志信息,英文全称为“journal control”,语法格式为“journalctl参数”。它可以根据事件、类型、服务名称等信息进行信息检索,从而大大提高了日常排错的效率。journalctl命令的常见参数如下所示。

  journalctl命令中常用按键以及作用

参数                 作用

-k

-b

-u     

-n

-p

-f

--since

--disk-usage

使用举例:

[root@linuxprobe ~]# journalctl -n 10
[root@linuxprobe ~]# journalctl -f         //实时刷新日志信息,效果与#tail -f /var/log/message相同

 

在rsyslog服务程序中,日志根据重要程度被分为9个等级,如下所示。这样的好处是,我们可以直击最重要的信息,而不用担心会被海啸般的输出内容所淹没。

日志信息登记分类

日志等级                       说明介绍

emerg

alert

crit

err

warning

notice

info

debug

none


[root@linuxprobe ~]# journalctl -p crit
[root@linuxprobe ~]# journalctl -p err    //查看err级别的日志信息
[root@linuxprobe ~]# journalctl --since today
[root@linuxprobe ~]# journalctl --since "-1 hour"
[root@linuxprobe ~]# journalctl --since "8:00" --until "12:00"
[root@linuxprobe ~]# journalctl --since "2021-07-01" --until "2021-10-31" 
[root@linuxprobe ~]# journalctl -u sshd.service   //查看某个服务(sshd)的日志信息