小易说IT 小易说IT

Linux/Unix 线上排错命令速查表

适用:服务器、容器、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>

十一、快速故障定位排查顺序(流程)

  1. uptime → 负载是否异常

  2. df -h && df -i → 磁盘满没

  3. free -h → 内存

  4. top / vmstat 1 → CPU / 上下文切换

  5. iostat -x 1 → IO 瓶颈

  6. ss -tulnp → 端口监听、连接

  7. dmesg -T → 内核 OOM / 硬件报错

  8. 业务日志 tail -Fgrep

  9. 必要时 tcpdump 抓包

十二、高频坑点速查

现象

优先命令

可能原因

load 很高,但 CPU idle 高

iostat -x

磁盘 IO 阻塞

进程莫名消失

`dmesg -T

grep OOM`

OOM 杀手干掉进程

端口无法访问

ss -tulnp + nc + 防火墙

程序没监听 / 防火墙拦截

Too many open files

lsof + /proc/<pid>/limits

句柄数上限不足

日志写不进去

df -i

inode 耗尽(小文件)

十三、安全提醒 ⚠️

  1. 线上尽量不要 kill -9,优先 kill;数据库 / 中间件强行 kill 容易损坏数据

  2. ddrm -rf 高危,执行前二次确认

  3. tcpdump 抓包尽量不要长时间抓满盘,限制包数量

  4. 不要在线上生产随意编译、安装工具,优先使用系统自带


本文原创作者:易君召,详见:https://www.yijunzhao.cc/about,转载请注明出处。

原文链接 https://www.yijunzhao.cc/archives/linux-unix-troubleshooting-commands-cheat-sheet

欢迎访问 https://www.yijunzhao.cc/

https://www.yijunzhao.cc/