适用:服务器、容器、WSL;优先轻量命令,不轻易装包;高危操作标 ⚠️ 思路:先看负载 → 看 CPU / 内存 → 磁盘 → 网络 → 进程 / 线程 → 日志 → 抓包
一、系统基础概览(第一时间执行)
# 系统版本
uname -a
cat /etc/os-release
# 负载、运行时间(重点看 1/5/15min load,和CPU核数对比)
uptime
# 整体CPU、内存、进程实时视图
top
# 更友好,推荐安装(很多容器默认没有)
htop
# 内存概览(-h human可读)
free -h
# 磁盘空间(重点看 Use%,>85%警惕)
df -h
# 磁盘inode满(常见坑:小文件爆inode,df看不出)
df -i
# 目录大小,定位大文件
du -sh *
du -sh /var/log/*
二、CPU 高占用排查
# 按CPU排序 top:P;按内存:M
top
# 一次性输出top快照,写入日志
top -b -n1
# 查看每个进程CPU/线程,看线程数
ps -efH
ps aux --sort=-%cpu | head -10
# 看进程内线程(找Java/Go线程暴涨)
ps -T -p <pid>
top -H -p <pid>
# 查看系统中断、上下文切换(性能瓶颈)
vmstat 1 10
# r:等待运行队列;us用户CPU;sy内核CPU;cs上下文切换
三、内存 / OOM 排查
# 查看OOM杀手日志(内存被打爆,内核杀进程)
dmesg -T | grep -i oom
# 按内存降序取前10进程
ps aux --sort=-%mem | head -10
# 查看进程内存详情 VIRT/RES/SHR
cat /proc/<pid>/status
# 查看页交换swap使用
swapon -s
四、磁盘 IO 卡死(load 高但 CPU 不高,大概率 IO 瓶颈)
# IO实时监控,await是重点(>10ms告警)
iostat -x 1
# 哪个进程在疯狂读写磁盘
iotop -oP
# 查看磁盘错误
dmesg | grep -i error
五、网络排错(端口、连接、延迟、丢包)
# 查看监听端口(netstat 很多新系统弃用,优先ss)
ss -tulnp
# 查看已建立连接,统计状态
ss -it state ESTABLISHED
# 测试端口连通
telnet ip port
# 现代替代,更稳
nc -zv ip port
# 路由
ip route
# 延迟、丢包
ping ip
# mtr 组合 traceroute+ping(强烈推荐,定位丢包段)
mtr --report ip
# 跟踪路由
traceroute ip
# 当前连接数统计(TCP状态统计)
ss -s
# 查看进程打开的socket
lsof -p <pid> | grep TCP
# 查看谁占用端口
lsof -i :<port>
六、进程 & 服务排查
# 查看进程树
pstree
# 查找进程
pgrep -f java
ps aux | grep <keyword>
# 信号 ⚠️
kill <pid> # 优雅终止
kill -9 <pid> # 强制杀,尽量少用,会丢数据
# systemd 服务日志(主流)
systemctl status xxx.service
journalctl -u xxx.service --since "1 hour ago"
# 查看进程打开文件句柄(Too many open files)
lsof -p <pid> | wc -l
cat /proc/<pid>/limits
七、日志快速检索(线上最常用)
# 实时跟踪日志
tail -f app.log
tail -F app.log # 文件轮转后继续跟踪,推荐
# 搜索错误,高亮
grep -i error app.log
grep -i "exception" app.log
# 时间范围过滤(grep时间字符串)
grep "2026-09-18 10:" app.log
# 分页查看
less app.log
# less快捷键:/关键词搜索;n下一个;shift+n上一个;G跳到末尾
# 大日志文件,只取最后2000行再过滤
tail -n 2000 app.log | grep timeout
八、内核 & 系统事件(dmesg 神器)
# 内核日志,带时间戳
dmesg -T
# 筛选崩溃、硬件、内存、IO问题
dmesg -T | grep -E "error|warn|oom|kill"
九、抓包(流量异常,确认请求内容)⚠️
# tcpdump 抓指定端口,保存文件
tcpdump -i any port 8080 -w capture.pcap
# 读取抓包文件
tcpdump -r capture.pcap
# 只看进出该主机流量
tcpdump -i any host 192.168.1.100
十、容器环境专属(Docker)
# 容器资源
docker stats
# 容器日志
docker logs -f --tail 200 <container-id>
# 进入容器
docker exec -it <container-id> /bin/sh
# 看容器内进程
docker top <container-id>
十一、快速故障定位排查顺序(流程)
uptime→ 负载是否异常df -h && df -i→ 磁盘满没free -h→ 内存top/vmstat 1→ CPU / 上下文切换iostat -x 1→ IO 瓶颈ss -tulnp→ 端口监听、连接dmesg -T→ 内核 OOM / 硬件报错业务日志
tail -F、grep必要时
tcpdump抓包
十二、高频坑点速查
十三、安全提醒 ⚠️
线上尽量不要
kill -9,优先kill;数据库 / 中间件强行 kill 容易损坏数据dd、rm -rf高危,执行前二次确认tcpdump 抓包尽量不要长时间抓满盘,限制包数量
不要在线上生产随意编译、安装工具,优先使用系统自带
本文原创作者:易君召,详见:https://www.yijunzhao.cc/about,转载请注明出处。
原文链接
欢迎访问