linux日志信息
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 //查看系统中最后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 //查看crit级别的日志信息
[root@linuxprobe ~]# journalctl -p err //查看err级别的日志信息
[root@linuxprobe ~]# journalctl --since today //查看今天的日志
[root@linuxprobe ~]# journalctl --since "-1 hour" //查看最近1小时的日志
[root@linuxprobe ~]# journalctl --since "8:00" --until "12:00" //查看8点到12点的日志
[root@linuxprobe ~]# journalctl --since "2021-07-01" --until "2021-10-31" //查看2021年7月1日至2021年10月31日的日志
[root@linuxprobe ~]# journalctl -u sshd.service //查看某个服务(sshd)的日志信息