Linux运维必备:20个高效故障排查命令详解

Linux运维必备:20个高效故障排查命令详解 1. Linux运维命令速查的必要性在服务器运维的日常工作中我们经常遇到各种突发状况服务突然宕机、磁盘空间告急、网络连接异常......这些场景下快速定位问题往往比解决问题本身更重要。根据我在阿里云和腾讯云担任高级运维工程师的经验熟练使用Linux命令的老手比新手平均能快10倍完成故障排查。为什么命令熟练度会造成如此大的效率差异核心在于两点一是对系统运行状态的快速感知能力二是精准的问题定位技巧。新手往往像无头苍蝇一样到处试错而老手则能通过几个关键命令直击问题本质。本文将分享我7年运维工作中总结的20个高频核心命令以及它们在实际故障排查中的组合用法。2. 系统状态速查命令组2.1 资源监控三件套当服务器出现响应缓慢时这三个命令能帮你30秒内定位瓶颈点# 综合资源视图类似Windows任务管理器 top -c -d 1 # 内存使用明细重点关注available值 free -h # 磁盘I/O负载%util超过80%说明磁盘繁忙 iostat -x 1 3实际案例去年双十一大促期间我们某台电商服务器突然响应变慢。用top发现CPU的wa等待I/O指标高达60%再用iostat确认是磁盘队列堆积最终定位到是日志没有按天切割导致单个文件过大。这个问题的排查全程只用了45秒。2.2 进程深度排查命令发现异常进程时需要层层深入分析# 第一层查看进程树关系 pstree -p # 第二层查看进程打开的文件 lsof -p PID # 第三层追踪系统调用需root strace -ff -p PID提示strace输出可能很冗长建议用-o参数保存到文件分析。我曾用strace发现过一个Python脚本因频繁调用stat()导致性能下降的有趣案例。3. 网络故障排查组合拳3.1 连接状态分析网络问题排查有个经典四步法# 1. 检查本地监听 ss -tulnp | grep 端口 # 2. 测试连通性带时间戳 ping -O www.baidu.com # 3. 路由追踪避开ICMP限制 mtr --tcp -P 端口 目标IP # 4. 抓包分析精简版 tcpdump -i eth0 -nn port 80 -c 100 -w debug.pcap3.2 防火墙规则检查很多网络问题其实源于防火墙配置# CentOS系列 firewall-cmd --list-all iptables -L -n -v # Ubuntu系列 ufw status verbose4. 磁盘与文件系统急救包4.1 空间占用分析快速定位大文件的两种姿势# 交互式分析推荐 ncdu / # 非交互式排序 find / -type f -size 100M -exec ls -lh {} | sort -k5 -rh4.2 文件恢复技巧误删文件后的抢救流程立即卸载分区或设为只读mount -o remount,ro /dev/sda1使用extundelete恢复extundelete /dev/sda1 --restore-file /home/user/important.doc如文件系统损坏fsck -y /dev/sda15. 日志分析高阶技巧5.1 多日志关联分析# 按时间合并多个日志适合分布式系统 grep 2023-07-15 /var/log/{nginx,mysql,app}/*.log | sort -k25.2 实时日志监控这个组合命令帮我发现过多次线上问题tail -f /var/log/nginx/access.log | \ awk {print $1,$7,$9} | \ grep -v 200$ | \ tee -a abnormal.log6. 我的命令使用心得命令参数固化把常用参数组合写入.bashrc别名比如alias mytoptop -c -d 1 -o %CPU alias mydfdf -hT -x tmpfs -x devtmpfs历史命令优化# 提升history实用性 export HISTTIMEFORMAT%F %T export HISTSIZE10000安全操作习惯执行rm前先echo确认文件列表修改重要配置前cp备份使用set -eu让脚本遇错即停个人知识库建设 我维护着一个Markdown文件记录每个命令的典型使用场景常见输出解读曾帮我解决的实际案例最后分享一个真实教训有次我误用了chmod -R 777 /幸好是在测试环境。现在执行递归操作前我都会先用-exec echo {} 先预览受影响文件列表。