linux系统⽇志排故⽅案,Linux系统故障排查思路与常见案例Linux系统故障排查思路与常见案例
1、Linux系统⽇志与分类
内核及系统⽇志
这种⽇志数据由系统服务syslog统⼀管理,根据其主配置⽂件“/f”中的设置决定将内核消息及各种
系统程序消息记录到什么位置。
⽤户⽇志:
这种⽇志数据⽤于记录Linux系统⽤户登录及退出系统的相关信息,包括⽤户名、登录的终端、登录时间、来源主机、正在使⽤的进程操作等。
程序⽇志:
有些应⽤程序运⾏会选择⾃⼰来独⽴管理⼀份⽇志⽂件(⽽不是交给syslog服务管理),⽤于记录本程序运⾏过程中的各种事件信息。
2、Linux下⽇志⽂件解读:
Linux系统本⾝和⼤部分服务器程序的⽇志⽂件默认情况下都放置在⽬录 /var/log 中。
/var/log/messages : 公共⽇志⽂件,记录Linux内核消息及各种应⽤程序的公共⽇志信息,包括启动、IO错误、⽹络错误、程序故障等。
对于未使⽤独⽴⽇志⽂件的应⽤程序或服务,⼀般都可以从该⽂件获得相关的事件记录信息。
/var/log/cron : 记录crond计划任务产⽣的事件消息。
/var/log/dmesg: 包含内核缓冲信息(kernel ring buffer)。在系统启动时,会在屏幕上显⽰许多与硬件有关的信息。此⽂件记录的信息是上次启动时的信息。
⽽⽤dmesg命令可查看本次系统启动时与硬件有关的信息,以及内核缓冲信息。
/var/log/maillog : 记录进⼊或发出系统的电⼦邮件活动。
/var/log/boot.log : 记录系统启动时的软件⽇志信息。
/var/log/secure : 记录⽤户远程登录、认证过程中的事件信息。
linux系统登录
/var/log/wtmp : 记录系统所有登录进⼊和退出纪录。可执⾏last命令查看。
/var/log/btmp : 记录错误登录进⼊系统的⽇志信息,可执⾏lastb命令查看。
/var/log/lastlog: 记录最近成功登录的事件和最后⼀次不成功的登录事件。可执⾏lastlog命令查看。
export LANG=en_US (把shell终端变为英⽂。)
#lastlog (查看最近登录信息)
#locale (查看系统编码格式)
⼆、忘记linux root密码故障与解决案例
1、单⽤户模式
这个问题出现的⼏率是很⾼的,不过,在linux下解决这个问题也很简单,只需重启linux系统,然后引导进⼊linux的单⽤户模式(init 1),
由于单⽤户模式是不需要输⼊登录密码的,因此,可以直接登录系统,修改root密码即可解决问题。
进⼊单⽤户模式centos6.x和centos7.x不同。
centos6.x进⼊单⽤户模式:
在启动刚开机时有欢迎界⾯,马上按上、下、左、右键。进⼊GRUB界⾯,再按键盘上“e”键。进⼊新的界⾯。选择 “kernel ...”这⾏(内核),按键盘上“E”键。
进⼊新的界⾯,此时可以输⼊字符。输⼊“single”按回车。再次进⼊“kernel ...”界⾯,继续选择此⾏,按“b”键。开始⾃动引导,⾃动进⼊单⽤户模式。
此时可以修改密码: #passwd root(表⽰修改root⽤户密码)。 按提⽰输⼊密码,完成,reboot。完成密码修改。
#cd /etc/grub.cfg(centos6.9开机⽂件的设置)
centos7.x进⼊单⽤户模式修改密码:
在启动时的引导界⾯,选择“”内核,按键盘“E”键,进⼊到新的界⾯,把光标移动到“Linux16 /...
root=UUID=...”这⾏,在这⾏加⼊内容,把光标放到这⾏最后,
.
..UTF-8这⾥,输⼊ “init=/bin/sh”加完后让继续引导,按Crt和x。进⼊到shell终端,开始重置密码。先把根分区变为可写,输⼊: # mount -o remount,rw /(把根分区重新挂载,让可读可写)。
更改密码 # passwd root(修改root⽤户密码),修改完成。进⼊#cd /etc/selinux/ 查看 #more config 。在根⽬录下常见⼀个⽂件: # touch /.autorelabel 或把 /etc/selinux下的config⽂件
⾥的 SELINUXTYPE的值改为 disabled。此时完成密码修改,重启系统。 使⽤ # exec /sbin/init (centos7单⽤户模式下⽤此命令重启。)
#cd /etc/grub2.cfg(centos7开机⽂件的设置)
三、系统⽆法启动故障案例
1、root⽂件系统破坏,导致系统⽆法启动故障案例。
这种情况多由于异常断电、不正常关机,引起⽂件系统结构不⼀致的。此种问题发⽣,在系统启动的时候,屏幕会显⽰:
checking root filesystem
/dev/sdb5 contains a file system with errors , check forced
/dev/sdb5: UNEXPECTED INCONSISTENCY;RUN fsck MANUALLY
....
press enter for maintenance
(or type Control-D to continue):
give root password for maintenance
从这个错误可以看出,系统根分区⽂件系统出现了问题,系统在启动时⽆法⾃动修复,然后进⼊到了⼀个交互界⾯,提⽰⽤户进⾏系统修复。
解决⽅法: 输⼊root密码后进⼊系统修复模式,在修复模式下,可以执⾏ fsck命令,如:
#fsck .ext4 -y /dev/sdb5 (⽂件系统是ext4,就⽤.ext4格式修复)
加⼊boot分区出现问题,先卸载该分区。# umount /boot
修复 #fsck /dev/sda1(/dev/sda1为boot分区对应的路径)
2、/etc/fstab⽂件丢失,导致系统⽆法启动案例
/etc/fstab⽂件存放了系统中⽂件系统的相关信息,在linux启动时,系统会读取此⽂件,⾃动挂载linux的各个分区,如果此⽂件配置错误,
或者丢失,就会导致系统⽆法启动,具体的故障现象是在检测mount partition时出现: starting system logger .此后系统启动就停⽌了。
解决⽅法:
利⽤Linux rescue 修复模式登录系统,进⽽获取分区和挂载点信息,重构/etc/fstab⽂件。
Linux系统⽆法启动的通⽤解决⽅案。
1,进⼊单⽤户模式或援救模式(rescue),修复分区错误或者备份数据,然后修复或重新安装系统。
进⼊援救(rescue)模式⽅式:通过iso磁盘或者U盘,选择到其启动,选择troubleshooting 。进⼊新的界⾯,选择 Rescue a CentOS system进⼊,
等进⼊新的界⾯,根据情况选择,continue ,第⼀个为continue,输⼊1.到新的界⾯,可以输⼊命令。#df -h。进⼊ #cd
/mnt/sysimage/ 再进⼊#cd /etc .
#vi /etc/fstab。
如果fstab⽂件丢失,则系统不能正常启动。
四、“Read-only file system”错误与解决案例
如现象: java.lang.RuntimeException:Cannot make directory:file:/www/data/html/2021-01-24
思路:可能是服务器磁盘故障(磁盘空间满了或者磁盘⽆法写⼊了)
原因:磁盘分区出现了问题,导致⽂件系统结构不⼀致,⽂件系统关闭了写功能,需要修复⽂件系统结构:
#umont /www/data (先卸载出现问题的分区)
#fsck -y /dev/sda7(修复出问题的分区对应的硬件分区地址)
#mount /dev/sda7 /data1(修复完成后,重新挂载该分区)
五、su命令切换⽤户带来的问题
故障现象: su:warning:cannot change directory to /home/oracle: Permission denied
解决思路:
⽤户⽬录/home/oracle权限问题
su程序执⾏权限问题
程序依赖的共享库权限问题
selinux问题导致
系统跟空间问题
产⽣原因: 根⽬录权限问题导致,修改根⽬录权限即可。 #chmod 555 /
#ldd /bin/ls (查看ls命令依赖的库⽂件),ldd命令⽤来查看系统命令依赖的库⽂件。
#more /etc/selinux/config (查看selinux配置⽂件。)
#stat / (查看⽬录或⽂件的权限信息)
六、“Too many open files”错误与解决⽅法:
如现象: java.io.IOException: Too many openfiles
思路:这个案例涉及到linux下ulimit命令的使⽤,ulimit主要是⽤来限制进程对资源的使⽤情况的,它⽀持各种类型的限制。
ulimit -a
-a :显⽰当前系统所有的limit资源信息。
-H :设置硬资源限制,⼀旦设置不能增加。
-S :设置软资源限制,设置后可以增加,但是不能超过硬资源设置。
-c : 最⼤的core⽂件的⼤⼩,以blocks为单位。
-f : 进程可以创建⽂件的最⼤值,以blocks为单位。
-d : 进程最⼤的数据段的⼤⼩,以kbytes为单位。
-m : 最⼤内存⼤⼩,以kbytes为单位。
-n : 可以打开的最⼤⽂件描述符的数量。
-s : 线程栈⼤⼩,以Kbytes为单位。
-P : 管道缓冲区的⼤⼩,以kbytes为单位。
-U : ⽤户最⼤可⽤的进程数。
-v : 进程最⼤可⽤的虚拟内存,以kbytes为单位。
-t : 最⼤CPU占⽤时间,以秒为单位。
-l :最⼤可加锁内存⼤⼩,以kbytes为单位。
#ulimit -n 655360 (修改可打开最⼤⽂件描述的数量为655360)此处修改为临时⽣效的。
需要永久保存需进⼊/etc/f ⽂件中配置,此处设置系统级的资源配置。
vi /etc/f
处理/etc/f⽂件还有⼀个/etc/security/limits.f⽂件,此⽂件在centos7中。前后两个⽂件以后⾯的⽂件设置为准。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。