天天看点

Linux 环境下分析和排查系统故障

这是我参与 8 月更文挑战的第 8 天,活动详情查看: 8月更文挑战

一名致力于在技术道路上的终身学习者、实践者、分享者,一位忙起来又偶尔偷懒的原创博主,一个偶尔无聊又偶尔幽默的少年。 欢迎各位掘友们微信搜索「杰哥的IT之旅」关注! 原文链接:Linux 环境下分析和排查系统故障

日志文件是用于记录Linux系统中各种运行消息的文件,不同的日志文件记载了不同类型的信息,如Linux内核消息、用户登录时间、程序错误等;

日志文件对于诊断和解决系统中的问题有很大帮助,因为Linux系统中运行的程序通常会把系统消息和错误消息写入相应的日志文件。

在Linux系统中,日志数据主要包括三种类型:

内核及系统日志:这种日志数据由系统服务rsyslog统一管理,根据其主配置文件/etc/rsyslog.conf中的设置决定将内核消息及各种系统程序消息记录到什么位置。

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

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

Linux系统本身和大部分服务器程序的日志文件默认都放在目录/var/log/下,一部分程序公用一个日志文件,一部分程序使用单个日志文件,而有些大型服务器程序由于日志文件不止一个,所以会在/var/log/目录中建立相应的子目录存放日志文件。

/var/log/messages:记录Linux内核消息及各种应用程序的公共日志信息、包括启动、1/0错误、网络错误、程序故障等。

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

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

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

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

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

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

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

分析日志文件的目的在于通过浏览日志查找关键信息、对系统服务进行调试,已经判断发生故障的原因等。大多数文本格式的日志文件,使用tail、more、less、cat等文本处理工具就可以查看日志内容。

内核及系统日志功能主要由默认安装的rsyslog-5.8.10-8.el6.x86_64软件包提供。rsyslog服务所使用的配置文件为/etc/rsyslog.conf。

从配置文件/etc/rsyslog.conf中可以看到,受rsyslogd服务管理的日志文件都是Linux系统中最主要的日志文件,记录了Linux系统中内核、用户认证、邮件、计划任务等最基本的系统消息。

在Linux内核中,根据日志消息的重要程度不同,将其分为不同的优先级别(数字等级越小、优先级越高、消息越重要)

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

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

2 CRIT(严重):比较严重的错误。

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

4 WARNING(提醒):可能影响系统功能,需要提醒用户的重要事件。

5 NOTICE(注意):不会影响正常功能,但是需要注意的事件。

6 INFO(信息):一般信息。

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

内核及大多数系统消息都被记录到公共日志文件/var/log/messages中,而其他一些程序消息被记录到各自独立的日志文件中,此外日志消息还能够记录到特定的存储设备中,或者直接发送给指定用户。

Linux 环境下分析和排查系统故障

对于rsyslog服务统一管理的大部分日志文件,使用的日志记录格式基本上都相同。以公共日志/var/log/messages文件的记录格式,其中每一行表示一条日志消息,每一条消息都均包括以下四个字段。

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

主机名:生成消息的计算机的名称。

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

消息:消息的具体内容。

users命令:输出当前登录的用户名称,每个显示的用户名对应一个登录会话。如果一个用户有不止一个登录会话,那他的用户名将显示与其相同的次数。

who命令用户报告当前登录到系统中的每个用户的信息,可以查看当前系统存在哪些不合法用户,从而对其进行审计和处理。who的默认输出包括用户名、终端类型、登录日期及远程主机。

last命令用户查询成功登录到系统的用户记录,最近登录情况将显示在最前面。通过last命令可以及时掌握Linux主机的登录情况,若发现未经授权的用户登录过,表示当前主机可能已被入侵。

lastb命令用于查询登录失败的用户记录,如登录的用户名错误、密码不正确等情况都将记录在案。

在Linux系统中,一部分应用程序 并没有使用rsyslog服务来管理日志,而是由程序自己维护日志记录。

出现以下一些注意现象

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

用户登录失败的日志记录,尤其是那些一再连续尝试进入失败的日志记录。

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

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

不正常的日志记录,日志残缺不全,或者是wtmp这样的日志文件也缺少了中间的记录文件。

由于MBR扇区中包含了整个硬盘的分区表记录,因此该扇区的备份文件必须存放到其他的存储设备中,否则在恢复时将无法读取到备份文件。

使用dd命令,人为的将MBR扇区的记录覆盖,模拟出MBR扇区被损坏的故障情况(切记先做好备份,而且将备份文件存放到其他硬盘)。

完成上述操作后重启系统,将会出现“Operating system not found”的提示信息,表示无法找到可用的操作系统,因此无法启动主机。

当出现安装向导界面,选择“Rescue installed system”,将以“急救模式”引导光盘中的Linux系统。

Linux 环境下分析和排查系统故障

之后依次按Enter键接受默认的语言、键盘格式,提示是否配置网卡时一般选择“NO”,然后系统会自动查找硬盘中的Linux分区并尝试将其挂载到“/mnt/sysimage”目录(选择“Continue”确认并继续)。会出现rescue窗口,单击“OK”按钮。

Linux 环境下分析和排查系统故障
Linux 环境下分析和排查系统故障
Linux 环境下分析和排查系统故障
Linux 环境下分析和排查系统故障

单击“Skip”键后将进入到“bash-4.1#”提示符的Bash Shell环境,只要执行相应的命令挂载保存有备份文件的硬盘分区,并将数据恢复到硬盘“/dev/sda”中。

Linux 环境下分析和排查系统故障
Linux 环境下分析和排查系统故障

完成恢复后,执行“exit”命令退出临时shell环境,执行“reboot”命令,系统将会自动重启。

当忘记root用户的密码时,将无法登录Linux系统执行管理、维护等任务,而只能通过其他用户登录使用一些受限制的功能。如果系统中还有别的具有root权限的用户,或者拥有修改root账号密码权限的用户,也可以使用这些用户登录系统,然后重新设置root用户密码。

具体步骤:

1.重启主机,在出现GRUB菜单时按↑、↓箭头键取消倒计时,并定位到要进入的操作系统选择项,按e键进入编辑模式。

Linux 环境下分析和排查系统故障

2.定位到kernel开头的一行并按e键,在行尾添加“single”的启动参数,其中“single”也可以换成字母“s”或数字“1”,也可以进入单用户模式。

Linux 环境下分析和排查系统故障

3.按Enter键确认后,按b键将系统引导进入单用户模式,直接进入shell环境(不需要任何密码验证)。

Linux 环境下分析和排查系统故障

4.在单用户模式的shell环境中,可以执行“passwd root”命令重新设置root用户密码。

Linux 环境下分析和排查系统故障

若使用RHEL6的安装光盘进入急救模式的shell环境,则只需切换到待修复Linux系统的根目录环境,执行“passwd root”命令重设root用户密码即可;或者修改/etc/shadow文件,将root用户的密码字段清空,重启后以空密码登录系统。

99%的Linux运维工程师必须要掌握的命令及运用

Linux 环境下 Oracle 数据库常用命令

Linux 环境下 vi/vim 编辑器常用命令

Linux环境下安装及管理程序(软件包封装、RPM命令、源代码编译安装的基本过程)

Linux 环境下账号和权限管理

Linux 磁盘和文件系统管理

Linux 环境下进程和计划任务管理

本文完。

原创不易,如果你觉得这篇文章对你有点用的话,麻烦你为本文点个赞、评论或转发一下,因为这将是我输出更多优质文章的动力,感谢!

对了,掘友们记得给我点个免费的关注哟!防止你迷路下次就找不到我了。

我们下期再见!

继续阅读