Linux常见故障排查

一、Linux 启动与登录问题
1. 超详细系统启动与登陆异常排查点
问题描述 Linux 系统在启动或登录阶段异常,可能表现为无法进入系统、卡在启动界面、或用户无法登录。
原因分析
  • 引导程序 (GRUB) 配置错误。

  • 内核模块缺失或损坏。

  • 文件系统错误。

  • 用户认证 (PAM/SSH) 配置错误。

解决步骤
  1. 检查启动日志:

dmesg | less
journalctl -b -1
cat /var/log/boot.log
日志截图思路:截取 kernel panicfilesystem error 的报错片段。
2.使用 LiveCD 进入救援模式,修复 grub:
mount /dev/sdaX /mnt
grub2-install --root-directory=/mnt /dev/sda
grub2-mkconfig -o /boot/grub2/grub.cfg
3.使用 fsck 修复文件系统:
fsck -y /dev/sdaX
2.grub.conf 文件内容被清空了怎么办
问题描述 由于误操作或磁盘损坏,grub.conf 文件内容被清空,系统无法正常引导。
解决步骤
1.使用安装盘进入救援模式:
chroot /mnt/sysroot
2.挂载根分区:
mount /dev/sdaX /mnt/sysroot
3.重新生成 grub 配置:
grub2-mkconfig -o /boot/grub2/grub.cfg
4.如果引导扇区损坏,重新安装 grub:
grub2-install /dev/sda
日志截图思路:截图 grub rescue> 提示界面。
3.巧妙利用 strace 查找丢失的文件
问题描述 应用运行时报错提示找不到某个文件,但不清楚具体路径。
解决步骤
1.使用 strace 跟踪:
strace -e openat -f ./your_app 2>&1 | grep -i "No such file"
2.输出示例:
openat(AT_FDCWD, "/etc/missing.conf", O_RDONLY) = -1 ENOENT (No such file or directory)
3.根据路径检查并恢复文件。
日志截图思路 展示 strace 的调用链,红框标出缺失文件。
4. 小心 PAM 不让你登录
问题描述 系统登录时报错,密码正确但无法登录。
解决步骤
1.检查 PAM 配置:
cat /etc/pam.d/system-auth
cat /etc/pam.d/sshd
2.如果配置被误改,从备份恢复。
3.临时允许 root 登录修复:
systemctl edit sshd
# 添加 PermitRootLogin yes
systemctl restart sshd
日志截图思路 截取 /var/log/secure 日志中 pam_authenticate failed 报错。
5. CentOS 登录卡住的原因被我找到了
问题描述 输入用户名密码后,终端无响应。
原因分析
  • SELinux 策略阻塞

  • LDAP/NIS 等外部认证挂起

  • pam_systemd 错误阻塞

解决步骤
1.切换到单用户模式:
systemctl isolate rescue.target
2.检查认证日志:
tail -f /var/log/secure
3.如为 SELinux 问题:
setenforce 0
4.如果是 LDAP/NIS,确认网络:
ping ldap_server
日志截图思路 展示 pam_systemd 阻塞或 sssd 超时的报错。
二、Linux 性能问题
1. 找到 Linux 虚拟机 Load 高的“元凶”
问题描述 虚拟机 load average 很高,但 CPU 使用率不高。
原因分析
  • I/O 阻塞

  • 进程大量等待资源

解决步骤
1.查看负载情况:
uptime
top -H -p <pid>
2.检查 I/O:
iostat -x 1
vmstat 1 5
3.使用 pidstat 定位:
pidstat -d 1
日志截图思路 展示 iostat%util 持续 100% 的盘符。
2. OOM killer 是被谁触发的
问题描述 系统进程被 OOM Killer 杀死,服务异常退出。
解决步骤
1.查看日志:
dmesg | grep -i kill
示例输出:
Out of memory: Kill process 1234 (java) score 985 or sacrifice child
2.检查内存使用:
cat /proc/meminfo
3.调整 swap,或优化应用内存占用。
截取 oom-killer 打印的进程树。
3. 我的服务器内存去哪儿了
问题描述 free 命令显示内存不足,但进程占用不多。
原因分析 Linux 会缓存大量文件系统数据。
解决步骤
1.查看内存:
free -h
2.查看缓存:
cat /proc/meminfo | grep -i cached
3.释放缓存:
sync; echo 3 > /proc/sys/vm/drop_caches
日志截图思路 展示 free 中 buffers/cache 使用率高。
4. CPU 占用不高但网络性能很差的一个原因
原因分析
  • 网卡中断绑定不合理

  • 单核 CPU 处理过多网络中断

解决步骤
1.查看网卡中断:
cat /proc/interrupts | grep eth0
2.修改中断绑定:
echo 2 > /proc/irq/45/smp_affinity
日志截图思路 展示 /proc/interrupts 中中断集中在单核。

5. 一次 I/O 异常捕获过程
问题描述 磁盘 I/O 异常,系统响应缓慢。
解决步骤
1.捕获 IO:
iostat -x 1
iotop -o
2.检查磁盘错误:
dmesg | grep -i error
3.处理方法:
  • 硬件损坏:更换磁盘

  • 软件瓶颈:优化应用 I/O

日志截图思路 截图 iotop 中单进程 I/O 占比异常。
三、Linux 系统服务与参数问题
1. 4 个 limits 生效的问题
问题描述 修改 /etc/security/limits.conf 后不生效。
原因分析 PAM 或 systemd 限制优先级高。
解决步骤
1.检查 pam_limits:
grep pam_limits.so /etc/pam.d/*
2. 检查 systemd:
systemctl show <service> | grep Limit
日志截图思路 展示 ulimit -n 与实际不一致。

2. 6 步排查 ss & netstat 统计结果不一样的原因
问题描述 ss 与 netstat 显示的连接数不同。
原因分析
  • 工具统计维度不同

  • TIME_WAIT/UDP 处理方式不同

解决步骤
1.ss 查看:
ss -s
2.netstat 查看:
netstat -an | wc -l
日志截图思路 并排截图 ssnetstat 的统计结果。
3. 为什么明明内存很充足但是 Java 程序仍申请不到内存
原因分析
  • overcommit 设置不合理

  • ulimit 限制

解决步骤
1.检查 overcommit:
cat /proc/sys/vm/overcommit_memory
2.修改:
echo 1 > /proc/sys/vm/overcommit_memory
3.检查 ulimit:
ulimit -a
日志截图思路 展示 JVM 抛出 OutOfMemoryError 的日志。
4. 请不要忽略 min_free_kbytes 的设置
问题描述 内存不足时,内核保留内存不足导致性能下降甚至宕机。
解决步骤
1.查看配置:
cat /proc/sys/vm/min_free_kbytes
2.修改:
echo 262144 > /proc/sys/vm/min_free_kbytes
日志截图思路 截图 dmesg 中的内存不足警告。
posted @ 2025-08-23 16:05  LB_运维技术  阅读(61)  评论(0)    收藏  举报