Linux服务器故障排查需按四步层层推进:先稳现场(保留网络、版本、资源、哈希证据),再查日志(聚焦时间锚点),接着盯进程/网络/文件三类异常源,最后针对性恢复(可逆、可验证)。

Linux服务器故障排查不是靠经验猜,而是按线索层层推进。核心是先稳住现场、再定位异常、最后验证修复,避免盲目重启或删文件导致证据丢失、问题扩大。
第一步:快速稳住系统,保留关键证据
很多故障在重启后就失去内存痕迹,比如恶意进程、临时文件、未落盘日志。别急着 reboot。
- 先用 ifconfig 和 ip route show 看网络是否连通、默认路由是否正常;
- 运行 uname -r 和 cat /etc/os-release 记下内核版本和发行版,后续比对工具或补丁时要用;
- 立刻执行 df -h 查磁盘空间,free -h 看内存,uptime 看负载——这三个命令能快速排除资源耗尽类问题;
- 若怀疑被入侵,用 md5sum /bin/ps /bin/ls /usr/bin/netstat 比对关键命令哈希,异常说明可能已被替换。
第二步:查日志,找时间锚点
日志是故障发生的时间线。重点不是翻完全部,而是抓住“第一次出错”和“服务停止前”的窗口。
- 启动问题看 dmesg -T(带时间戳的内核日志)或 journalctl -xb(本次启动完整日志);
- 服务崩溃查 journalctl -u servicename,比如
journalctl -u nginx; - SSH异常登录或暴力破解痕迹,搜 grep "Failed password" /var/log/auth.log(Debian/Ubuntu)或 /var/log/secure(RHEL/CentOS);
- 如果日志被清空或
/var/log目录权限异常,本身已是高危信号,需同步检查账户与定时任务。
第三步:盯住进程、网络和文件三类异常源
90% 的典型故障集中在这三个层面,按顺序排查效率最高:
-
进程:用 top 或 htop 看 CPU/内存占用,按
P(CPU)或M(内存)排序;再用 ps auxf 观察父子进程树,识别伪装成合法进程的可疑项; - 网络:用 ss -tulnp 替代 netstat,列出所有监听端口及对应进程;再用 lsof -i -P -n 查已建立连接,特别注意非常规端口(如 6666、8888)连向境外 IP;
-
文件:检查 /etc/passwd 是否多出 UID=0 的账户(
awk -F: '$3==0 {print $1}' /etc/passwd);查看 /etc/crontab 和 /var/spool/cron/ 下是否有陌生定时任务;扫描 /tmp、/dev/shm 是否存在近期创建的可执行文件。
第四步:针对性恢复,不求快但求稳
修复动作要可逆、可验证,避免“修一个,崩两个”:
- 服务起不来?先 systemctl status servicename 看报错,再 journalctl -u servicename -n 50 看最近 50 行日志;
- 磁盘只读(Read-only filesystem)?先 dmesg | tail -20 看是否有 I/O 错误,再 fsck -y /dev/xxx(确保卸载状态下执行);
- 脚本执行报
: bad interpreter: No such file or directory?大概率是 Windows 换行符,用 dos2unix script.sh 或sed -i 's/\r$//' script.sh; - SSH 登录慢?检查 /etc/hosts 是否配了主机名映射,或临时注释掉 /etc/resolv.conf 中的 nameserver 测试 DNS 是否卡顿。
故障恢复的关键不在工具多,而在每一步都有明确目标和验证方式。从现象出发,用日志定时间,用命令验状态,用对比找差异——这样排查下来,多数问题都能在 30 分钟内定位到根因。


















