Linux学习~日志文件参考

日志的功能

用于记录系统、程序运行中发生的各种事件

通过阅读日志,有助于诊断和解决系统故障

日志文件的分类

内核及系统日志

由系统服务syslog统一进行管理,主配置文件/etc/syslog.conf(配置了将日志文件记录的位置)

用户日志

记录系统用户登录及退出系统的相关信息

程序日志

由各种应用程序独立管理的日志文件,记录格式不统一

日志文件是用于记录 Linux 系统中各种运行消息的文件,相当于 Linux 主机的"日记"

日志文件对于诊断和解决系统中的问题很有帮助,系统一旦出现问题时及时分析日志就会"有据可查"。此外,当主机遭受攻击时,日志文件还可以帮助寻找攻击者留下的痕迹

不同的日志文件记载了不同类型的信息,例如 Linux 内核消息、用户登录记录、程序错误等等 ,后面将会分别进行介绍

日志保存位置

默认位于:/var/log 目录下

主要日志文件介绍

内核及公共消息日志:/var/log/messages 启动 IO network soft

计划任务日志: /var/log/cron

系统引导日志: /var/log/dmesg

邮件系统日志: /var/log/maillog

安装的rpm包: /var/log/rpmpkgs

用户登录志: /var/log/lastlog 每个用户最近的登录事件

/var/log/secure 用户认证相关的安全事件

/var/log/wtmp 每个用户登录,注销及系统启动和停机时间

/var/log/btmp 失败的,错误的登录尝试及验证事件
/var/log/messages:记录Linux内核消息及各种应用程序的公共日志信息,包括启动、IO错误、网络错误、程序故障等。对于未使用独立日志文件的应用程序或服务,一般都可以从该日志文件中获得相关的事件记录信息。

/var/log/cron: 记录crond计划任务产生的事件信息。

/var/log/dmesg: 记录Linux系统在引导过程中的各种事件信息。

/var/log/maillog: 记录进入或发出系统的电子邮件活动。

/var/log/lastlog: 记录每个用户最近的登录事件。

/var/log/rpmpkgs:记录系统中安装的各rpm包列表信息。

/var/log/secure: 记录用户认证相关的安全事件信息。

/var/log/wtmp: 记录每个用户登录、注销及系统启动和停机事件。

/var/log/btmp: 记录失败的、错误的登录尝试及验证事件。

内核及系统日志

由系统服务 rsyslogd 统一管理

**软件包:**rsyslog-8.24.0-38.el7.x86_64.rpm

主要程序:/sbin/rsyslogd

配置文件:/etc/rsyslog.conf

由rsyslog软件包提供了rsyslogd程序,分别用于记录系统内核的消息和各种应用程序的消息

在 /etc/syslog.conf 配置文件中,配置记录的格式如下(具体参考 man syslog.conf):

设备类别.日志级别 日志消息发送位置

配置文件:grep -v "^$" /etc/rsyslog.conf |grep -v "^#"
------ 如果需要在同一行中设置多个"设备.级别"组合,每组之间用分号隔开。日志级别的含义在下一页讲解

------ 发送位置可以是本机的用户名; "-/var/log/maillog" 中前面的"-"号表示每次记录日志时并不马上进行数据同步

日志消息的级别

0 EMERG(紧急):会导致主机系统不可用的情况

1 ALERT(警告):必须马上采取措施解决的问题

2 CRIT(严重):比较严重的情况

3 ERR(错误):运行出现错误

4 WARNING(提醒):可能会影响系统功能的事件

5 NOTICE(注意):不会影响系统但值得注意

6 INFO(信息):一般信息

7 DEBUG(调试):程序或系统调试信息等

理解日志消息的级别,级别数字越小的日志消息反映的问题越严重

必要时可以展示配置文件 /etc/rsyslog.conf 中的内容,并就其中的日志级别配置做简要说明

日志记录的一般格式

内核及系统日志文件中的每一行表示一条消息,每个消息由 4 个字段的固定格式组成:

时间标签:消息发出的日期和时间

主机名:生成消息的计算机的名字

子系统名称:发出消息的应用程序名称

消息:消息的具体内容

bash 复制代码
[root@centos ~]# tail -f /var/log/messages

Sep  1 11:04:07 centos dbus[4841]: [system] Successfully activated service 'org.freedesktop.realmd'

Sep  1 11:04:07 centos systemd: Started Realm and Domain Configuration.

Sep  1 11:04:07 centos org.gnome.Shell.desktop: Window manager warning: "XF86RFKill" is not a valid accelerator

用户日志分析

保存了用户登录、退出系统等相关信息

/var/log/lastlog:最近的用户登录事件

/var/log/wtmp:用户登录、注销及系统开、关机事件

/var/run/utmp:当前登录的每个用户的详细信息

/var/log/secure:与用户验证相关的安全性事件

分析工具
bash 复制代码
users 、who、w、last、lastb

除了 /var/log/secure 文件以外,其他三个用户日志文件都是二进制的数据文件,无法直接使用tail、less等文本查看工具浏览

因此,分析用户登录相关信息通常需要借助专门的命令工具

分别演示users 、who、w、last、lastb命令工具的使用,并进行比较讲解,侧重于较为陌生的last命令的使用

bash 复制代码
[root@centos ~]# who

root     pts/0        2020-09-01 11:04 (192.168.137.1)

hao      :0           2020-09-01 11:17 (:0)

[root@centos ~]# w

 11:18:09 up 14 min,  2 users,  load average: 2.50, 0.71, 0.31

USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT

root     pts/0    192.168.137.1    11:04    1.00s  0.27s  0.07s w

hao      :0       :0               11:17   ?xdm?  29.36s  0.26s /usr/libexec/

w 功能说明:显示目前登入系统的用户信息。

语法:w [-fhlsuV][用户名称]

补充说明:执行这项指令可得知目前登入系统的用户有那些人,以及他们正在执行的程序。单独执行w

指令会显示所有的用户,您也可指定用户名称,仅显示某位用户的相关信息。

当前时间,系统启动到现在的时间,登录用户的数目,系统在1分钟,5分钟,15分钟内系统的平均负载值

登录帐号、终端名称、远程主机名、登录时间、空闲时间、JCPU、PCPU、当前正在运行进程的命令行

参数:

-f  开启或关闭显示用户从何处登入系统。

-h  不显示各栏位的标题信息列。

-l  使用详细格式列表,此为预设值。

-s  使用简洁格式列表,不显示用户登入时间,终端机阶段作业和程序所耗费的CPU时间。

-u  忽略执行程序的名称,以及该程序耗费CPU时间的信息。

-V  显示版本信息。

bash 复制代码
[root@centos ~]# users

hao root

[root@centos ~]# last

[root@centos ~]# lastb

注意:

用户在非常规的时间登录,或者用户登录系统的IP地址和以往的不一样

用户登录失败的日志记录,尤其是一再联系尝试进入失败的日志记录

非法使用或不正当使用超级用户权限

无故或者非法重新启动各项网络服务记录

不正常的日志信息

程序日志分析

由相应的应用程序独立进行管理

Web服务:/var/log/httpd/

access_log、error_log

代理服务:/var/log/squid/

access.log、cache.log、

FTP服务:/var/log/xferlog

分析工具

文本查看、grep过滤检索、Webmin管理套件中查看

awk、sed等文本过滤、格式化编辑工具

Webalizer、Awstats等专用日志分析工具

日志并不是完全可靠的,高明的黑客在入侵系统后,经常会打扫现场

日志管理策略

及时作好备份和归档

延长日志保存期限

控制日志访问权限

日志中可能会包含各类敏感信息,如账户、口令等

集中管理日志

将服务器的日志文件发到统一的日志文件服务器

便于日志信息的统一收集、整理和分析

杜绝日志信息的意外丢失、恶意篡改或删除

修复 MBR 扇区故障

故障原因

病毒、木马等造成的破坏

不正确的分区操作、磁盘读写误操作

故障现象

找不到引导程序,启动中断

无法加载操作系统,开机后黑屏

解决思路

应提前作好备份文件

以 CentOS 7安装光盘引导进入急救模式

从备份文件中恢复

常见的系统启动类故障包括:MBR扇区故障、GRUB引导故障、丢失系统文件、遗忘root密码......

MBR即Master Boot Record,主引导记录,位于硬盘的第一个扇区(512 字节 ),其中包含了系统引导程序、硬盘分区表信息

如果没有MBR的备份文件,恢复难度会比较大,可能需要使用"诺顿磁盘医生(Norton Disk Doctor)"之类能够按分区位置查找修复的磁盘工具

方法

新添加一个块硬盘

Fdisk进行分区

bash 复制代码
新挂载一个分区格式化成ext4

[root@centos ~]# mkfs.ext4  /dev/sdb1

Parted --l命令检查分区类型

[root@centos ~]# parted   -l

新建一个目录进行新分区挂载点backup

[root@centos ~]# mkdir  /backup

[root@centos ~]# mount  /dev/sdb1  /backup

[root@centos ~]#dd  if=/dev/sda  of=/backup/sda.mbr.bak  bs=512  count=1  创建一个mbr备份

[root@centos ~]#dd  if=/dev/zero  of=/dev/sda  bs=512  count=1

模拟mbr损坏

开机进入到修复模式

进入修复模式

第二行修复系统

输入1进入配置模式----回车----在回车

bash 复制代码
fdisk --l /dev/sda  检查无法获得有效分区表

mkdir  /back 新建一个挂载点

mount  /dev/sdb1  /back 挂载分区

dd  if=/back/sda.mbr.bak  of=/dev/sda  恢复备份数据

exit 退出

修复 GRUB 引导故障

故障原因

MBR 中的 GRUB 引导程序遭到破坏

grub.conf 文件丢失、引导配置有误

故障现象

系统引导停滞,显示"grub>" 提示符

解决思路

尝试手动输入引导命令

进入急救模式,重写或者从备份中恢复 grub.conf

向 MBR 扇区中重建 grub 程序

/boot/grub/grub.conf这个文件是Grub的配置文件,这个文件是linux系统启动的核心文件

GRand Unified Bootloader 中文意思为"极好的统一引导器",是大多数Linux系统默认使用的引导程序

例子
方法一、

1.备份grub菜单引导文件

bash 复制代码
[root@a ~]# cd /boot/grub2/

[root@a grub2]# ls

device.map  fonts  grub.cfg  grubenv  i386-pc  locale  themes

[root@a grub2]# cp grub.cfg grub.cfg.bak

2.将grub.cfg文件中的内容复制到txt文件当中

bash 复制代码
insmod xfs

linux16 /vmlinuz-3.10.0-1062.el7.x86_64 root=/dev/mapper/centos-root ro rd.lv    m.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet LANG=zh_CN.UTF-8

initrd16 /initramfs-3.10.0-1062.el7.x86_64.img 

3.模拟grub菜单损坏

bash 复制代码
cd /boot/grub2/

rm -rf grub.cfg

reboot

4.启动开始修复。如下图

方法二、

进入急救模式

1.首先挂载光盘

2.调整设备启动顺序

3.按shift和 "+"将cd-rom调整到第一位。F10保存退出。

4.进入急救模式

开始恢复。

然后我们在将硬盘设备的启动顺序调整到第一位

最后系统启动成功。

遗忘 root 用户密码

故障原因

遗忘 root 用户的密码

故障现象

无法进行需要 root 权限的管理操作

若没有其他可用帐号,将无法登录系统

解决思路

进入急救模式,重设密码

例子
方法一

进入急救模式

bash 复制代码
chroot  /mnt/sysimage   设置sysimage为当前环境的根

passwd  root 重新设置密码

exit

exec  /sbin/init 6    重新启动

修复文件系统

故障原因

非正常关机、突然断电、设备读写失误等

文件系统的超级块(super-block)信息被破坏

故障现象

无法向分区中读取或写入数据

启动后提示"Give root password for maintenance"

解决思路

根据提示输入 root 口令,进入修复状态

使用xfs_repair命令进行修复

磁盘资源耗尽故障

故障原因

磁盘空间已被大量的数据占满,空间耗尽

虽然还有可用空间,但文件数i节点耗尽

故障现象

无法写入新的文件,提示"... : 设备上没有空间"

部分程序无法运行,甚至系统无法启动

解决思路

清理磁盘空间,删除无用、冗余的文件

转移或删除占用大量 i 节点的琐碎文件

进入急救模式进行修复

为用户设置磁盘配额

例子
bash 复制代码
mkdir  /date

mount  /dev/sdb1  /date

df  --i  /date

vi  aaa.sh

chmod  777  aaa.sh

sh  aaa.sh  &

新建文档内容为下

vi  aaa.sh

i=1

while [ i  -le  10000 ]

do

touch /date/file$i

let  i++

done

检测磁盘坏道

故障原因

磁盘设备中存在坏道(逻辑的或物理的)

故障现象

读取磁盘中的数据时,磁盘设备发出异常声响。

访问磁盘中的某个文件时,反复读取且出错,提示文件损坏

对于新建立的分区无法完成格式化

系统使用该磁盘时频繁死机

解决思路
bash 复制代码
检测硬盘中是否存在坏道

修复硬盘,或更换新的硬盘

badblocks  --sv /dev/sdb

逻辑坏道主要由于软件操作不当造成,可以使用软件修复

物理坏道是物理性损坏,只能通过更改磁盘分区或扇区的占用位置来进行改善,排除掉包含有坏块的磁盘空间

注意是mkfs命令而不是fsck命令,检查坏道之前,应尽量先卸载该分区,退出正在访问设备的其他程序

相关推荐
浅念-1 小时前
C/C++内存管理
c语言·开发语言·c++·经验分享·笔记·学习
凌晨7点2 小时前
DSP学习F28004x数据手册:第13章-ADC
单片机·嵌入式硬件·学习
xuhe22 小时前
Claude Code配合Astro + GitHub Pages:为 sharelatex-ce 打造现代化的开源项目宣传页
linux·git·docker·github·浏览器·overleaf
charlie1145141912 小时前
RK3568跑Arch Linux全路程指南(以正点原子的RK3568开发板为例子)
linux·嵌入式·rootfs·教程·环境配置·嵌入式linux·工程实践
野犬寒鸦2 小时前
从零起步学习并发编程 || 第九章:Future 类详解及CompletableFuture 类在项目实战中的应用
java·开发语言·jvm·数据库·后端·学习
OpsEye3 小时前
交换分区优化实战:从监控到调优,让系统告别卡顿
运维·it·监控·告警·swap·监控系统·交换分区
蒸蒸yyyyzwd3 小时前
cpp os 计网学习笔记
笔记·学习
大熊程序猿3 小时前
metabase 报表使用
运维
爆米花byh3 小时前
在RockyLinux9环境的Doris单机版安装
linux·数据库·database