news 2026/3/2 21:26:33

Linux系统故障排查技术指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Linux系统故障排查技术指南

Linux系统故障排查技术指南

【免费下载链接】Script-Reset-Windows-Update-ToolThis script reset the Windows Update Components.项目地址: https://gitcode.com/gh_mirrors/sc/Script-Reset-Windows-Update-Tool

一、问题识别与诊断流程

技术难度:基础

1.1 故障现象分类

Linux系统故障可分为以下主要类型:

  • 启动故障:系统无法正常引导或卡在启动过程
  • 网络故障:网络连接异常或服务无法访问
  • 性能问题:系统响应缓慢或资源占用过高
  • 服务故障:关键系统服务无法启动或异常终止
  • 文件系统问题:磁盘错误或文件损坏

1.2 诊断流程

1.3 基础诊断命令集

故障类型排查命令预期输出修复阈值
系统负载top -b -n 1系统进程及资源占用情况CPU使用率持续>90%
内存问题free -h内存使用统计可用内存<10%
磁盘空间df -h文件系统使用情况使用率>90%
网络连接netstat -tulpn网络连接及监听端口关键端口未监听
服务状态systemctl list-units --failed失败的系统服务存在任何失败服务

1.4 日志分析方法

# 查看系统启动日志 journalctl -b # 过滤错误信息 journalctl -p err # 查看特定服务日志 journalctl -u sshd.service # 实时监控日志 tail -f /var/log/syslog

日志文件位置说明:

  • 系统日志:/var/log/syslog (Debian/Ubuntu) 或 /var/log/messages (RHEL/CentOS)
  • 应用日志:/var/log/[应用名称]/
  • 用户登录日志:/var/log/auth.log

二、核心排查工具解析

技术难度:进阶

2.1 文件系统检查工具

fsck - 文件系统一致性检查

# 检查/dev/sda1分区(需卸载或只读挂载) fsck /dev/sda1 # 自动修复错误(谨慎使用) fsck -y /dev/sda1

⚠️风险提示:使用fsck前请确保数据已备份,强行修复可能导致数据丢失。建议先使用只读模式检查:fsck -n /dev/sda1

dumpe2fs - 查看ext文件系统信息

dumpe2fs /dev/sda1 | grep -i 'block count'

2.2 系统日志分析工具

journalctl - 系统日志管理

# 查看最近100行错误日志 journalctl -p err -n 100 # 按时间范围查看日志 journalctl --since "2023-01-01 00:00:00" --until "2023-01-01 12:00:00" # 查看特定进程日志 journalctl _PID=1234

journalctl工作原理: systemd-journald服务收集系统日志,存储在/var/log/journal/目录。相比传统syslog,提供更强大的过滤和查询能力,支持按服务、进程ID、用户ID等多维度筛选。

2.3 网络诊断工具集

ss - 网络连接统计

# 显示所有TCP连接 ss -tuln # 显示监听状态的端口 ss -l # 显示进程ID和程序名 ss -pl

tcpdump - 网络数据包捕获

# 捕获eth0接口上的HTTP流量 tcpdump -i eth0 port 80 -w capture.pcap # 读取捕获文件 tcpdump -r capture.pcap

2.4 性能监控工具

vmstat - 系统资源监控

# 每2秒输出一次系统状态,共5次 vmstat 2 5

输出示例: procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 0 0 0 102400 12345 234567 0 0 5 10 123 456 1 2 97 0 0

iostat - 磁盘I/O性能

# 显示所有磁盘I/O统计 iostat -x # 监控sda磁盘,每3秒刷新一次 iostat -x sda 3

三、分级解决方案

技术难度:基础/进阶/专家

3.1 启动故障修复(基础)

3.1.1 GRUB引导修复

命令行修复路径

# 安装GRUB到MBR grub-install /dev/sda # 更新GRUB配置 update-grub

图形界面修复路径

  1. 使用Ubuntu Live CD启动
  2. 打开"启动修复"工具
  3. 选择"推荐修复"选项
  4. 重启系统

⚠️风险提示:错误的GRUB配置可能导致系统无法启动,请在操作前备份/boot/grub/grub.cfg文件。

3.1.2 initramfs修复
# 重新生成initramfs update-initramfs -u -k all # 针对特定内核版本 update-initramfs -u -k 5.4.0-80-generic

3.2 文件系统修复(进阶)

3.2.1 磁盘错误修复

前置检查项

  • 确认磁盘状态:smartctl -H /dev/sda
  • 检查分区表:fdisk -l /dev/sda

修复步骤

# 卸载文件系统 umount /dev/sda1 # 执行文件系统检查 e2fsck -f -v /dev/sda1 # 对于XFS文件系统 xfs_repair /dev/sda1

验证步骤

# 挂载文件系统 mount /dev/sda1 /mnt # 检查磁盘健康状态 dmesg | grep sda

3.3 系统服务恢复(进阶)

3.3.1 服务启动故障排查
# 检查服务状态 systemctl status nginx.service # 查看服务日志 journalctl -u nginx.service --since "10 minutes ago" # 尝试手动启动 systemctl start nginx.service # 检查依赖关系 systemctl list-dependencies nginx.service
3.3.2 服务自启动配置
# 设置服务开机自启 systemctl enable nginx.service # 禁止服务开机自启 systemctl disable nginx.service # 查看服务启动顺序 systemctl show -p Before nginx.service

3.4 内核问题处理(专家)

3.4.1 内核升级与回滚

升级内核

# Debian/Ubuntu apt-get install linux-image-generic # RHEL/CentOS yum install kernel # 重启系统 reboot

回滚方案

  1. 启动时在GRUB菜单选择旧内核
  2. 卸载问题内核:
# Debian/Ubuntu apt-get remove linux-image-5.4.0-80-generic # RHEL/CentOS yum remove kernel-3.10.0-1160.el7.x86_64

内核选择原则

  • 生产环境建议使用LTS(长期支持)版本
  • 新硬件支持可能需要更新的内核版本
  • 内核升级前应测试兼容性

四、自动化排查脚本

技术难度:进阶

4.1 系统健康检查脚本

#!/bin/bash # 系统健康状态自动检查脚本 # 检查CPU使用率 cpu_usage=$(top -b -n 1 | grep "Cpu(s)" | awk '{print $2 + $4}') if (( $(echo "$cpu_usage > 80" | bc -l) )); then echo "警告: CPU使用率过高 ($cpu_usage%)" fi # 检查内存使用 mem_usage=$(free | awk '/Mem/{printf "%.2f", $3/$2*100}') if (( $(echo "$mem_usage > 90" | bc -l) )); then echo "警告: 内存使用率过高 ($mem_usage%)" fi # 检查磁盘空间 disk_usage=$(df -h / | awk 'NR==2 {print $5}' | sed 's/%//') if [ $disk_usage -gt 90 ]; then echo "警告: 根分区使用率过高 ($disk_usage%)" fi # 检查失败服务 failed_services=$(systemctl list-units --failed --type=service --no-legend | wc -l) if [ $failed_services -gt 0 ]; then echo "警告: 有 $failed_services 个服务启动失败" systemctl list-units --failed --type=service --no-legend fi # 检查系统日志错误 error_count=$(journalctl -p err --since "1 hour ago" | wc -l) if [ $error_count -gt 10 ]; then echo "警告: 过去一小时内有 $error_count 个错误日志" fi

4.2 网络诊断自动化工具

#!/bin/bash # 网络连接问题诊断脚本 echo "=== 网络诊断报告 ===" date echo -e "\n--- 网络接口状态 ---" ip addr show echo -e "\n--- 路由表 ---" ip route show echo -e "\n--- DNS配置 ---" cat /etc/resolv.conf echo -e "\n--- 连接测试 ---" ping -c 3 8.8.8.8 if [ $? -ne 0 ]; then echo "错误: 无法连接到外部网络" else echo "外部网络连接正常" fi echo -e "\n--- DNS解析测试 ---" nslookup google.com if [ $? -ne 0 ]; then echo "错误: DNS解析失败" else echo "DNS解析正常" fi echo -e "\n--- 常用端口连通性测试 ---" ports=("80" "443" "22") for port in "${ports[@]}"; do nc -z -w 2 google.com $port if [ $? -eq 0 ]; then echo "端口 $port: 可连接" else echo "端口 $port: 不可连接" fi done

4.3 脚本部署与定时执行

# 将脚本保存为system_health_check.sh chmod +x system_health_check.sh # 移动到系统路径 sudo mv system_health_check.sh /usr/local/bin/ # 设置定时任务(每小时执行一次) echo "0 * * * * /usr/local/bin/system_health_check.sh >> /var/log/system_health.log 2>&1" | crontab -

⚠️风险提示:自动化脚本可能因系统配置差异导致误报或漏报,建议先在测试环境验证。


五、故障案例分析

技术难度:综合

5.1 案例一:文件系统只读故障

环境:Ubuntu 20.04 LTS,ext4文件系统

现象:系统突然变为只读模式,无法创建或修改文件。

排查过程

  1. 检查系统日志:journalctl -p err发现大量"I/O error"
  2. 运行磁盘检查:fsck /dev/sda1发现inode错误
  3. 检查磁盘健康:smartctl -H /dev/sda显示磁盘即将故障

解决方案

  1. 立即备份关键数据
  2. 使用fsck -y /dev/sda1修复文件系统错误
  3. 更换故障硬盘并恢复数据

预防措施

  • 定期执行smartctl检查磁盘健康状态
  • 配置磁盘错误报警机制
  • 实施定期数据备份策略

5.2 案例二:内存泄漏导致系统崩溃

环境:CentOS 7,Java应用服务器

现象:系统运行几天后变得缓慢,最终无响应。

排查过程

  1. 查看历史监控数据,发现内存使用率持续增长
  2. 使用top命令识别内存占用最高的进程
  3. 使用jmap分析Java进程内存使用情况
  4. 发现应用存在内存泄漏问题

解决方案

  1. 重启应用释放内存:systemctl restart java-app
  2. 升级应用到修复内存泄漏的版本
  3. 配置监控告警,当内存使用率达到85%时自动重启

验证步骤

# 监控内存使用趋势 sar -r 5 12 # 检查Java堆内存使用 jstat -gcutil <pid> 1000 10

5.3 案例三:网络连接数耗尽

环境:Debian 10,Nginx Web服务器

现象:服务器无法建立新的网络连接,已有连接正常。

排查过程

  1. 检查系统连接数:ss -s发现TCP连接数达到上限
  2. 查看Nginx配置:grep worker_connections /etc/nginx/nginx.conf
  3. 检查系统限制:ulimit -n发现文件描述符限制过低

解决方案

  1. 临时调整文件描述符限制:ulimit -n 65535
  2. 永久修改系统限制:
# 在/etc/security/limits.conf添加 * soft nofile 65535 * hard nofile 65535
  1. 优化Nginx配置:
worker_connections 10240; keepalive_timeout 30;

5.4 案例四:系统启动进入emergency模式

环境:Fedora 34

现象:系统启动后直接进入emergency shell,无法正常启动。

排查过程

  1. 检查启动日志:journalctl -b
  2. 发现"/home分区挂载失败"错误
  3. 检查/etc/fstab文件,发现UUID错误
  4. 验证磁盘UUID:blkid与fstab对比

解决方案

  1. 使用正确的UUID更新/etc/fstab
  2. 重新生成initramfs:dracut -f
  3. 重启系统:systemctl reboot

5.5 案例五:内核升级后无线网卡失效

环境:Ubuntu 22.04,Intel无线网卡

现象:内核升级后无线网卡无法识别。

排查过程

  1. 检查内核版本:uname -r
  2. 查看网卡状态:lspci | grep Network
  3. 检查驱动加载:lsmod | grep iwlwifi
  4. 查看错误日志:dmesg | grep iwlwifi

解决方案

  1. 回滚到上一个稳定内核
  2. 下载并安装适合新内核的无线网卡驱动
  3. 禁用自动内核更新:apt-mark hold linux-image-generic

六、排查思路决策树

技术难度:综合


七、附录

7.1 系统日志位置速查表

日志文件路径用途适用发行版
/var/log/syslog系统综合日志Debian/Ubuntu
/var/log/messages系统综合日志RHEL/CentOS
/var/log/auth.log认证和授权日志所有系统
/var/log/kern.log内核日志所有系统
/var/log/boot.log系统启动日志所有系统
/var/log/dmesg内核环缓冲区日志所有系统
/var/log/audit/audit.log审计日志所有系统(带auditd)
/var/log/apache2/Apache Web服务器日志Debian/Ubuntu
/var/log/httpd/Apache Web服务器日志RHEL/CentOS
/var/log/nginx/Nginx Web服务器日志所有系统

7.2 常见错误代码解析

错误代码含义可能原因解决方案
EIOI/O错误磁盘故障或硬件问题检查磁盘健康状态
ENOSPC设备上没有空间磁盘空间满清理磁盘空间
EACCES权限被拒绝文件权限设置不当调整文件权限
ENOENT没有那个文件或目录路径错误或文件被删除检查路径是否正确
ECONNREFUSED连接被拒绝服务未启动或防火墙阻止检查服务状态和防火墙规则
ETIMEDOUT连接超时网络问题或服务无响应检查网络连接和服务状态
ENOMEM无法分配内存内存不足释放内存或增加系统内存
EINVAL无效的参数命令参数错误检查命令语法和参数

7.3 发行版特有命令差异

功能Debian/UbuntuRHEL/CentOSFedora
包管理apt, dpkgyum, rpmdnf
服务管理systemctlsystemctlsystemctl
防火墙ufwfirewalldfirewalld
网络配置netplannmclinmcli
内核升级apt-get upgradeyum update kerneldnf upgrade kernel
系统更新apt-get update && apt-get upgradeyum updatednf upgrade
硬件信息lshwlshwlshw

==重要提示==:执行系统级操作前,务必确认操作的影响范围并备份关键数据。不同Linux发行版可能存在命令差异,请根据实际环境调整命令。

【免费下载链接】Script-Reset-Windows-Update-ToolThis script reset the Windows Update Components.项目地址: https://gitcode.com/gh_mirrors/sc/Script-Reset-Windows-Update-Tool

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/27 18:16:31

【Dify医疗安全配置黄金法则】:20年资深架构师亲授5大合规避坑指南(等保2.0+HIPAA双认证实战)

第一章&#xff1a;Dify医疗安全配置的战略定位与合规基线在医疗AI应用落地过程中&#xff0c;Dify作为低代码大模型编排平台&#xff0c;其安全配置并非技术附属项&#xff0c;而是贯穿数据治理、模型生命周期与临床服务闭环的核心战略支点。医疗场景对隐私保护、审计可追溯性…

作者头像 李华
网站建设 2026/2/26 10:40:51

如何通过venera打造专业漫画收藏库:从入门到精通

如何通过venera打造专业漫画收藏库&#xff1a;从入门到精通 【免费下载链接】venera A comic app 项目地址: https://gitcode.com/gh_mirrors/ve/venera 随着数字阅读的普及&#xff0c;漫画爱好者面临着如何高效管理日益增长的本地漫画收藏的挑战。venera作为一款专业…

作者头像 李华
网站建设 2026/3/1 8:02:59

30个最好的3D相关AI代理技能

随着Web 3.0、元宇宙和沉浸式体验的发展&#xff0c;3D技术已经成为现代应用开发的重要组成部分。无论您是开发网页3D体验、游戏、虚拟现实&#xff0c;还是进行3D建模和CAD设计&#xff0c;AI代理技能都能显著提升您的工作效率。本文将为您介绍目前最实用、最受欢迎的3D相关AI…

作者头像 李华
网站建设 2026/3/1 12:29:58

Windows 11系统精简优化指南:从问题诊断到性能提升的完整方案

Windows 11系统精简优化指南&#xff1a;从问题诊断到性能提升的完整方案 【免费下载链接】tiny11builder Scripts to build a trimmed-down Windows 11 image. 项目地址: https://gitcode.com/GitHub_Trending/ti/tiny11builder 一、系统性能问题诊断 常见系统性能瓶颈…

作者头像 李华
网站建设 2026/3/1 22:13:33

Qt毕业设计避坑指南:从技术选型到工程落地的完整实践

Qt毕业设计避坑指南&#xff1a;从技术选型到工程落地的完整实践 人话版&#xff1a;把“能跑就行”的课设&#xff0c;升级成“能吹能卖”的工业级作品。 一、先吐槽&#xff1a;那些年我们一起踩过的 Qt 坑 做毕设最怕“三件套”&#xff1a; 界面一拖动就卡成 PPT&#xf…

作者头像 李华