作为IT工程师,掌握Linux系统故障排查技能至关重要。以下是一套系统化的排查方法和修复策略:
收集系统信息
uname -a # 查看内核版本和系统架构
lsb_release -a # 查看发行版信息
cat /etc/os-release # 更详细的系统信息
uptime # 系统运行时间和负载
检查系统资源
free -h # 内存使用情况
df -h # 磁盘空间
top/htop # 实时进程监控
iostat -x 1 # I/O统计
vmstat 1 # 虚拟内存统计
查看系统日志
journalctl -xe # systemd日志
dmesg # 内核日志
cat /var/log/syslog # 系统日志
tail -f /var/log/* # 实时跟踪日志文件
排查步骤:
- 进入救援模式或单用户模式
- 检查文件系统:
bash
fsck /dev/sdXN # 检查并修复文件系统
- 检查GRUB配置:
bash
grub2-mkconfig -o /boot/grub2/grub.cfg
- 检查initramfs:
bash
dracut --force
排查步骤:
ip addr # 检查IP配置
ping 8.8.8.8 # 测试基本连接
traceroute google.com # 路由跟踪
netstat -tulnp # 查看监听端口
ss -tulnp # 更现代的替代方案
nslookup google.com # DNS解析测试
排查步骤:
sar -u 1 3 # CPU使用率
sar -r 1 3 # 内存使用
iotop # I/O使用情况
perf top # 性能分析
strace -p <PID> # 跟踪进程系统调用
系统快照分析
sosreport # 收集系统诊断信息
内核调试
crash /usr/lib/debug/lib/modules/$(uname -r)/vmlinux /var/crash/<dump>
容器/Docker问题
docker logs <container>
docker inspect <container>
crictl inspect <container>
软件包问题
rpm -Va # 验证RPM包完整性(RHEL/CentOS)
dpkg --verify # 验证DEB包完整性(Debian/Ubuntu)
yum/dnf reinstall <pkg> # 重新安装软件包
配置文件恢复
rpm -qf /etc/<config> # 找出配置文件所属包
rpm2cpio <pkg>.rpm | cpio -idmv ./etc/<config> # 从RPM提取默认配置
内核参数调整
sysctl -a # 查看所有内核参数
sysctl -w <param>=<value> # 临时修改
# 永久修改: /etc/sysctl.conf
bash
yum/dnf/apt update && upgrade
通过系统化的排查方法和适当的工具使用,可以高效地解决大多数Linux系统问题。记住:良好的日志记录和监控是预防和快速解决问题的关键。