技术博客

Linux服务器排障常用命令:从CPU、内存、磁盘到端口和日志

整理 Linux 运维排障中最常用的命令,覆盖 CPU、内存、磁盘、网络端口、服务状态和日志定位。

Linux排障服务器运维日志分析性能分析

服务器出问题时,最怕没有排查顺序。CPU 高、内存满、磁盘爆、端口不通、服务启动失败,看起来都很急,但只要按层次检查,通常都能快速缩小范围。

下面整理一组 Linux 运维排障常用命令。

查看系统负载

uptime

输出中的 load average 表示系统负载。要结合 CPU 核数判断。如果 4 核机器长期负载超过 4,就需要进一步分析。

也可以用:

top

或:

htop

观察 CPU、内存和进程排序。

查看 CPU 占用高的进程

ps aux --sort=-%cpu | head

如果某个进程长期占用 CPU,需要确认它是正常业务高峰,还是异常循环、攻击流量、脚本失控。

查看内存使用

free -h

Linux 会把一部分内存用于缓存,不能只看 free 很低就判断内存不足。更重要的是 available。

查看内存占用高的进程:

ps aux --sort=-%mem | head

查看磁盘空间

df -h

如果某个分区 100%,服务可能无法写日志、创建临时文件或写数据库。

找大目录:

du -h --max-depth=1 /var | sort -h

日志目录、上传目录、备份目录是常见增长点。

查看磁盘 IO

如果 CPU 不高但系统很卡,可能是 IO 压力。

iostat -x 1

如果没有该命令,可以安装 sysstat 包。

查看端口监听

ss -lntup

这个命令可以看到哪些端口在监听,以及对应进程。

例如 Web 服务访问不了时,先确认 80 或 443 是否真的在监听。

测试网络连通性

ping 8.8.8.8

测试 DNS:

dig www.zdyedu.cn

测试 HTTP:

curl -I https://www.zdyedu.cn

如果 curl -v,还能看到连接、TLS 和响应头细节。

查看服务状态

systemctl status nginx

如果服务启动失败,继续看日志:

journalctl -u nginx -n 100 --no-pager

很多时候错误原因已经写在日志里,比如配置语法错误、端口被占用、权限不足。

查看实时日志

tail -f /var/log/nginx/error.log

也可以结合 grep:

tail -f /var/log/messages | grep error

排障时不要只看应用日志,系统日志、服务日志和访问日志要结合起来看。

查看最近登录

last

查看失败登录:

lastb

如果看到大量陌生 IP 尝试登录,要检查 SSH 暴露和密码策略。

推荐排障顺序

遇到服务异常,可以按下面顺序:

  1. 先确认现象:访问慢、无法访问、报错还是间歇性失败。
  2. 看服务状态:systemctl status
  3. 看端口监听:ss -lntup
  4. 看资源:topfree -hdf -h
  5. 看日志:应用日志、服务日志、系统日志。
  6. 看最近变更:配置、代码、证书、DNS、CDN、防火墙。

总结

Linux 排障靠的是顺序和证据。命令只是工具,关键是知道每一步要验证什么假设。

把 CPU、内存、磁盘、端口、服务和日志这几个维度练熟,大多数基础运维问题都能独立定位。