当前位置: 首页 > news >正文

linux故障排查

案例1:GRUB引导故障

故障现象: 系统启动卡在"GRUB>"提示符,无法进入系统 原因分析

  • GRUB配置文件损坏(/boot/grub/grub.cfg)

  • 引导文件被误删或磁盘损坏 解决步骤

  1. 在GRUB命令行依次执行:

insmod xfs
set root=(hd0,msdos1)
linux16 /vmlinuz-3.10.0-1160.el7.x86_64 root=/dev/mapper/centos-root ro rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet
initrd16 /initramfs-3.10.0-1160.el7.x86_64.img
boot

  1. 进入系统后执行:grub2-mkconfig -o /boot/grub2/grub.cfg

案例2:文件系统只读故障

故障现象: 无法创建文件,提示"Read-only file system" 排查过程

  1. dmesg | grep -i error 发现磁盘I/O错误

  2. smartctl -a /dev/sda 检查磁盘健康状态 解决方案

  3. 卸载分区:umount /dev/sda1

  4. 强制修复:fsck -y /dev/sda1 或者 xfs文件系统: xfs_repair /dev/sda1

  5. 重新挂载:mount -a

案例3:OOM Killer触发

故障现象: 关键进程突然被终止,系统日志出现"Killed process" 分析工具

  1. grep -i 'killed process' /var/log/messages

  2. free -h 查看内存使用情况

  3. vmstat 1 监控内存交换 优化方案

  • 调整oom_score_adj:echo -100 > /proc/[PID]/oom_score_adj

  • 修改sysctl.conf:

    vm.overcommit_memory = 2
    vm.overcommit_ratio = 80

案例4:系统启动卡住(initramfs损坏)

故障现象: 启动时卡在"Loading initial ramdisk" 紧急处理

  1. 进入救援模式(troubleshooting)使用rescue a centos system

  2. 选择1

  3. 重建initramfs:

    chroot /mnt/sysimage
    dracut -f /boot/initramfs-$(uname -r).img $(uname -r)
    exit
    reboot
  4. 假如之前调整了bios启动顺序,需要还原回来。

案例5:磁盘空间耗尽

故障现象: 服务异常,df显示使用率100% 快速定位

  1. lsof -n | grep deleted 查找未释放空间的进程

  2. du -xh --max-depth=1 / | sort -hr 定位大文件 典型场景

  • /var/log/journal 日志膨胀:journalctl --vacuum-size=100M

  • /tmp目录堆积:rm -rf /tmp/*.tmp

案例6:SSH登录缓慢

故障现象: SSH连接延迟超过10秒 排查步骤

  1. ssh -vvv user@host 查看详细日志

  2. 检查DNS配置:UseDNS no in sshd_config

  3. 关闭GSSAPI认证:GSSAPIAuthentication no

  4. strace -p [sshd_PID] 跟踪系统调用

案例7:逻辑卷无法扩展

故障现象: lvextend后文件系统未扩容 正确操作流程

lvextend -L +10G /dev/vg01/lv_data
resize2fs /dev/vg01/lv_data  # 对ext4文件系统
xfs_growfs /data            # 对XFS文件系统

注意事项

  • 确保物理卷有足够空间:vgs查看Free PE

  • 在线扩容无需卸载

案例8:内核模块冲突

故障现象: 系统更新后网卡失效 解决方案

  1. lsmod | grep e1000 查看加载模块

  2. modinfo e1000 检查模块信息

filename:       /lib/modules/4.18.0-553.el8_10.x86_64/kernel/drivers/net/ethernet/intel/e1000/e1000.ko.xz

1. `rmmod e1000 && modprobe e1000` 重载驱动

2. 回滚驱动:`dnf reinstall kmod-e1000-4.18.0`

### 案例9:NTP时间不同步

**故障现象**:
日志出现"Clock skew detected"警告
**排错流程**:

1. `ntpq -pn` 查看时间源状态
2. `chronyc sources -v` 检查chrony同步状态
3. `systemctl restart chronyd`
4. 硬件时钟同步:`hwclock --systohc`

### 案例10:SELinux导致服务异常

**故障现象**:
Apache无法访问自定义目录
**诊断方法**:

1. `tail -f /var/log/audit/audit.log | grep httpd`
2. `sealert -a /var/log/audit/audit.log`
**解决方案**:

# 临时解决
setenforce 0
# 永久方案
semanage fcontext -a -t httpd_sys_content_t "/webroot(/.*)?"
restorecon -Rv /webroot

案例11、root密码遗忘

在RHEL/CentOS 7及更新版本中,如果忘记root密码,可以通过以下步骤重置(需物理/虚拟控制台访问权限):

方法原理

通过修改GRUB2启动参数进入单用户模式,绕过身份验证直接获取root权限


详细操作步骤

  1. 重启系统并中断引导

# 当系统启动到GRUB菜单时,快速按下方向键阻止自动引导
# 选择默认内核条目(通常第一条)按 `e` 键进入编辑模式

    2.修改内核参数

# 在linux16行(或linux行)末尾追加:
rd.break enforcing=0

# 修改后的完整行示例:
linux16 /vmlinuz-3.10.0-1160.el7.x86_64 root=/dev/mapper/rhel-root rw rd.break enforcing=0

  3.进入紧急模式

# 按 Ctrl+X 启动系统,进入紧急救援模式的shell环境
# 此时文件系统挂载在/sysroot(只读模式)

   4.切换根目录

chroot /sysroot

  5.修改root密码

# 此时已获得完整root权限:
passwd root
# 输入新密码两次(不会显示输入内容)

 6.修复SELinux上下文

# 强制重新标记文件系统(重要!):
touch /.autorelabel

7.退出并重启

exit
reboot

关键参数说明

参数作用
rd.break在内核加载初期中断启动流程
enforcing=0临时禁用SELinux强制模式

注意事项

1. **磁盘加密系统**:若启用了LUKS加密,需先解密再操作
2. **云服务器**:部分云平台需通过VNC或救援模式操作
3. **时间控制**:`.autorelabel`会导致首次重启时间较长(约5-15分钟)
4. **UEFI系统**:可能需要关闭Secure Boot功能
5. **审计日志**:系统日志会记录密码修改操作(/var/log/audit/audit.log)

替代方案(适用于不同场景)

1. **init方法:

# 在GRUB的linux行后追加:
init=/bin/bash

systemd方法

systemctl edit --force --full rescue.target

防范建议

1. 配置sudo权限给普通用户
2. 使用密码管理工具(如KeePass)
3. 定期进行密码备份(加密存储)
4. 启用SSH密钥认证+sudo组合验证

该方法适用于:RHEL/CentOS 7/8/9、Oracle Linux 7+、Fedora 19+等使用systemd的系统


文章转载自:

http://wbEA3NiS.fkffr.cn
http://RKEvPonY.fkffr.cn
http://Ps3D3nkU.fkffr.cn
http://JIe1gh5I.fkffr.cn
http://laLmIcCr.fkffr.cn
http://LWxym2bA.fkffr.cn
http://glUeVjjs.fkffr.cn
http://dh5nog5Q.fkffr.cn
http://OAQWExVs.fkffr.cn
http://GJDL8XTq.fkffr.cn
http://hvji9rdQ.fkffr.cn
http://usv6705w.fkffr.cn
http://Xy8FRNDr.fkffr.cn
http://FCG5VqtG.fkffr.cn
http://pSmoNYRr.fkffr.cn
http://skr90wk9.fkffr.cn
http://fCfulZGk.fkffr.cn
http://2rtHm2X2.fkffr.cn
http://sG6oiQvn.fkffr.cn
http://kdkuCwF7.fkffr.cn
http://XrErhqOM.fkffr.cn
http://QzkuPDO4.fkffr.cn
http://jdKLHTQ1.fkffr.cn
http://4PjJEUF6.fkffr.cn
http://zkDdzAPc.fkffr.cn
http://PnrW2503.fkffr.cn
http://zsYXCqnZ.fkffr.cn
http://9bb2Chpx.fkffr.cn
http://czLZ7gwR.fkffr.cn
http://E8J0pgWd.fkffr.cn
http://www.dtcms.com/a/383724.html

相关文章:

  • 为什么哈希表能 O(1) 查找?——C++ 哈希基础入门
  • [CISCN2019 华北赛区 Day1 Web2]ikun
  • 算法——递推求解
  • stm32之点灯
  • Qt---内存管理 对象树(Object Tree)机制
  • 人工智能通识与实践 - 计算机视觉技术
  • GAMES101:现代计算机图形学入门(Chapter1 计算机图形学概述)学习笔记
  • MATLAB 常用函数汇总大全和高级应用总结
  • Knockout.js 任务调度模块详解
  • LeetCode 2414.最长的字母续连续子字符串的长度
  • 当环保遇上大数据:生态环境大数据技术专业的课程侧重哪些领域?
  • 【Ansible】使用角色和Ansible内容集合简化Playbook知识点
  • init / record / required:让 C# 对象一次成型
  • BigemapPro快速添加历史影像(Arcgis卫星地图历史地图)
  • 树莓派操作第一章常用指令
  • Altium Designer(AD24)工作面板的切换与定制
  • 【WebSocket✨】入门之旅(七):WebSocket 的未来发展趋势
  • MySQL——库的操作
  • Redis缓存的常见问题及其解决方案
  • Conda 安装 CUDA Toolkit 解决 nvcc 找不到的问题
  • (二)Django框架常用配置
  • Android开发-数据库SQLite
  • (附源码)基于springboot的幼儿园管理系统
  • 【从零到公网】本地电脑部署服务并实现公网访问(IPv4/IPv6/DDNS 全攻略)
  • VTK基础(01):VTK中的基本概念
  • Sentinel:微服务架构下的高可用流量防卫兵
  • Unity学习----【进阶】TextMeshPro学习(三)--进阶知识点(TMP基础设置,材质球相关,两个辅助工具类)
  • OpenCV:指纹识别
  • map/multimap容器
  • leetcode 966. 元音拼写检查器 中等