外观
02 · 进阶命令与排查
从"会用命令"到"能定位问题"的分水岭。这一章的命令多数不是拿来背的,而是出事时按顺序排下来。
小节规划
| 小节 | 内容 | 状态 |
|---|---|---|
| 文本三剑客 grep / sed / awk | 过滤、替换、列统计的真实用法与输出解读 | 已写 |
| xargs 与并行 | 为什么管道接 xargs 会炸、-P 并行、-0 处理带空格文件名 | 已写 |
| journalctl 日志 | 按服务/时间/优先级取日志,--since 的时区坑 | 已写 |
| strace / ltrace | 进程卡住时看它在等哪个系统调用 | 已写 |
| 性能四件套 | vmstat / iostat / sar / pidstat 各看什么、怎么联读 | 已写 |
| ss 与 tcpdump | TIME_WAIT 堆积、抓包过滤表达式、连接被谁重置 | 已写 |
| Shell 编程规范 | set -euo pipefail、数组、函数、退出码判断 | 已写 |
| CPU 100% 定位 | 从 top 到线程栈到代码行的完整链路 | 已写 |
| 内存与负载排查 | OOM killer 日志、si/so 中断、D 状态进程 | 已写 |
排查起手式
问题现场先跑这一组,把基线数据留住再动手:
bash
uptime # 负载趋势(1/5/15 分钟)
dmesg -T | tail -50 # 内核有没有 OOM、磁盘报错
vmstat 1 5 # r 队列、si/so、us/sy/wa 占比
iostat -xz 1 3 # 哪块盘 %util 高、await 多少
top -b -n 1 | head -20 # 前几名进程快照
ss -s # 连接数总览(TIME_WAIT/CLOSE_WAIT)
df -h; df -i # 空间和 inode 双确认