Linux故障案例和经验汇总(一)

一、系统日志和常见日志解读

1、系统日志分类

(1)内核及系统日志

这种日志数据由系统服务syslog统一管理(后续升级到了 r syslog),根据其主配置文件"/etc/syslog.conf"中的设置决定将内核消息及各种系统程序消息记录到什么位置。

(2)用户日志

这种日志数据用于记录Linux系统用户登录及退出系统的相关信息,包括用户名、登录的终端、
登录时间、来源主机、正在使用的进程操作等。

(3)程序日志

有些应用程序运会选择自己来独立管理一份日志文件(而不是交给syslog服务管理),用于
记录本程序运行过程中的各种事件信息。

2、Linux下常见日志文件解读

Linux系统本身和大部分服务器程序的日志文件默认情况下都放置在目录“/var/log”中。

(1)/var/log/messages:公共日志文件,记录Linux内核消息及各种应用程序的公共日志信息,包括启动、IO错误、网络错误、程序故障等。对于未使用独立日志文件的应用程序或服务,一般都可以从该文件获得相关的事件记录信息。
(2)/var/log/cron:记录crond计划任务产生的事件消息(在/var/spool/cron下会生成相关文件)。
(3)/var/log/dmesg: 包含内核缓冲信息(kernel ring buffer)。在系统启动时,会在屏幕上显示许多与硬件有关的信息。此文件记录的信息时系统上次启动时的信息。而用 dmesg命令 可查看 本次 系统启动时与硬件有关的信息(实时状态),以及内核缓冲信息。
(4)/var/log/maillog:记录进入或发出系统的电子邮件活动。
(5)/var/log/boot.log 记录系统启动时的软件日志信息。
(6)/var/log/secure:记录用户远程登录、认证过程中的事件信息。
(7)
/var/log/wtmp:记录系统所有登录进入和退出纪录。 可执行last命令查看
/var/log/btmp:记录错误登录进入系统的日志信息,可执行lastb命令查看。
/var/log/lastlog:记录最近成功登录的事件和最后一次不成功的登录事件。可执行lastlog命令查看。
以上三个都是二进制文件,得通过命令查看

3、操作经验

(1)boot.log文件它会有自动备份的功能,当然还有一些像:cron、maillog、secure等都有这类功能。

(2)messages文件里有各种公共信息的日志,不光有应用程序的,内核的信息也会有。

(3)dmesg文件里其实就是硬件的信息,当然一些应用软件有问题也会显示,这是操作系统上次启动时候的日志;想查看本次系统的实时信息,就输入dmesg这个命令。

(4)boot.log 软件启动关闭会显示记录。

(5)secure远程登录信息成功或者失败都会输出出来,就比如你用别的机器ssh远程登录本机,成功或者错误都会以日志的形式输出出来;还有一些sudo的操作,如果没有权限也会在这个文件里输出。

 (6)cron里就是一些定时执行的一些任务,可以查看任务是否被执行。

(7)last|lastb|lastlog这三个命令常常配合使用,用来检测是否有非法暴力入侵或者某些错误登录的信息。

二、忘记root用户密码故障与解决

我们主要介绍的是在linux环境下基于redhat和centos系列的服务器故障解决,主要方法就是进入单用户模式下去重置密码。

1、单用户模式

类似于Windows下的安全模式,在单用户模式下一些系统的服务是没有启动的,它只是启动了系统的一些基础的内核,单用户模式下无法远程登录,因为网络服务是无法启动的。

2、解决方案

重启 Linux系统,然后引导进入Linux的单用户模式(init 1),由于单用户模式是不需要输入登录密码的,因此,可以直接登录系统,修改root密码(passwd)即可解决问题。

3、如何进入单用户模式

(1)Centos6.x

重启系统,在欢迎界面点击上下左右键(5秒内),紧接着会进入引导界面,在引导界面选择所需要的内核后按键盘“e”,选择“kernel”内核,再次按键盘“e”,进入界面后输入“single”,紧接着按回车,它会跳回到引导界面,此时再次选择“kernel”内核,按键盘“b”,这时进入了单用户模式下,接着我们就可以用“passed”命令正常修改root密码了,最后我们“reboot”重启系统就可以了。

(2)Centos7.x

重启系统,由于Centos7.x使用的是grub第二个版本,在欢迎界面点击上下左右键(5秒内),紧接着会进入引导界面,在引导界面选择所需要的内核后按键盘“e”,这里我们只有一个内核,选择第一个(第二个它不是一个独立的内核,这里不做介绍)。

 进入界面后,将光标移动到关于内核的为“linux16”,我们在这一行的后面加上“init=/bin/sh”,接着我们按键盘“Ctrl x”进入引导。

 引导后进入shell终端默认它是不可写的,这时我们需要把根分区“/”变成可写的,执行“mount -o remount,rw /”,此时根分区就是可写的状态。

 ps:这里我们执行“df -h”看一下此时的分区情况,发现有一些问题,这里有一块显示的是非法字符,这就跟我们操作系统的编码设置有关系,"locale"是输出当前系统的编码,这里我们可以临时改变一下在终端模式下输出的输出集,使用命令“export  LANG=en_US”,这时我们shell终端的环境就变成了一个英文环境。

接着我们就可以执行“passwd”命令进行root用户的密码修改了,但这里有一个需要注意的地方,在Centos7下要注意selinux的配置,我们可以在/etc/selinux下查看config文件,是否有打开selinux,如果打开,我们想让修改的密码生效的话,需要有一个前提,那便是在根目录下“/”创建一个隐藏文件“/.autorelabel”,这时 我们就可以正常登录了。当然如果允许的情况下,将selinux处于一个disabled关闭状态,就不用创建隐藏文件了。

接着我们执行“exec  /sbin/init”命令进行重启(不能用“reboot”重启)。

(3) 引导配置文件

Centos6.x位置:/etc/grub.conf

Centos7.x位置:/etc/grub2.cfg

针对Centos6.x的/boot/grub/grub.conf文件解读
default=0: 定义了没有选择内核菜单的启动项时选择第一个内核启动。
timeout=5 : 定义了没有任何操作时5s的超时时间。
splashimage=(hd0,0)/grub/splash.xpm.gz 定义了开机时内核选择菜单的背景图片,可以不写这一行,但是写错也会导致机器无法启动!
hidemenu: 隐藏内核选择菜单,按任意键出现选择菜单,可以不写这一行。
title:内核名字标题。
root(hd0,0) : 相对下面的内核和initrd全局定义root为第一块磁盘的第一个分区,此处的root不是真的root,而是开机时的/boot 分区,因为bootloader开机还没有加载内核以及/分区。加载的内核需要通过/boot分区加载/分区和内核。
kernel : 定义内核文件位置,向内核文件传递必要的参数。并且指定 / 分区所在的位置。
initrd: 包括加载根分区的必要的驱动以及可以在内存当中解压释放出虚根用于加载真正的内核文件

  • 63
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值