前言
在掌握了 cd、ls、grep 等基础命令之后,面对线上高并发环境下的性能瓶颈、内存泄漏、网络丢包或海量日志分析时,我们需要更加深入、底层的 Linux 高阶工具。本文将系统梳理生产环境中资深运维与研发人员必备的 Linux 高阶命令。
一、文本三剑客进阶与批处理工具
awk:强大的流式文本格式化与处理语言。- 统计日志中访问频次最高的 IP:
awk '{print $1}' access.log | sort | uniq -c | sort -nr | head -n 10 - 按条件汇总数值:
awk -F',' '$3 > 100 {sum+=$3} END {print "Total:", sum}' data.csv
- 统计日志中访问频次最高的 IP:
sed:流编辑器,擅长正则替换与流式过滤。- 全局替换并直接修改文件:
sed -i 's/old_text/new_text/g' config.conf - 删除空白行或注释行:
sed -i '/^#/d; /^$/d' nginx.conf
- 全局替换并直接修改文件:
xargs:参数转换与并发执行。- 安全删除匹配文件(避免参数过长错误):
find /tmp -name "*.log" -print0 | xargs -0 rm -f - 多进程并发任务:
cat url_list.txt | xargs -n 1 -P 4 curl -s -O
- 安全删除匹配文件(避免参数过长错误):
二、系统性能瓶颈排查与深度监控
vmstat:综合查看虚拟内存、进程、CPU 活动与系统上下文切换。- 监控周期 1 秒,输出 5 次:
vmstat 1 5 - 重点指标:
r(就绪队列进程数)、cs(上下文切换次数)、si/so(Swap换入换出,非0通常预示内存严重不足)。
- 监控周期 1 秒,输出 5 次:
iostat:深度磁盘 I/O 吞吐与等待分析。- 查看扩展指标:
iostat -xz 1 - 重点指标:
%util(磁盘忙碌比例接近100%说明I/O瓶颈)、await(平均等待响应时间)。
- 查看扩展指标:
pidstat:多维度分析指定进程的 CPU、内存、I/O 细粒度资源。- 排查哪个进程在疯狂写入磁盘:
pidstat -d 1 - 监控进程上下文切换:
pidstat -w -p <PID> 1
- 排查哪个进程在疯狂写入磁盘:
mpstat:多核 CPU 负载均衡情况追踪。- 查看各核使用率:
mpstat -P ALL 1
- 查看各核使用率:
三、系统调用追踪与故障诊断
strace:跟踪进程与 Linux 内核交互的系统调用与信号。- 定位进程卡死在哪个系统调用:
strace -p <PID> -T -tt - 统计系统调用耗时排行:
strace -c -p <PID>
- 定位进程卡死在哪个系统调用:
lsof:列出当前系统打开的所有文件及套接字。- 排查特定端口被谁占用:
lsof -i :8080 - 排查已删除但未释放磁盘空间的大文件:
lsof | grep deleted - 查看某个目录正在被哪些进程占用:
lsof +D /var/log
- 排查特定端口被谁占用:
journalctl:现代 systemd 日志检索利器。- 实时追踪特定服务日志:
journalctl -u nginx.service -f - 查看本次启动以来的致命错误:
journalctl -p err..emerg -b
- 实时追踪特定服务日志:
四、网络高阶调试与抓包分析
tcpdump:底层网络抓包与协议分析。- 抓取指定网卡、特定端口的 TCP 数据包:
tcpdump -i eth0 -nn -A 'tcp port 80 and host 192.168.1.50' - 抓包保存为 pcap 文件供 Wireshark 分析:
tcpdump -i any -w trace.pcap -c 1000
- 抓取指定网卡、特定端口的 TCP 数据包:
ss:替代 netstat 的高性能套接字统计。- 排查处于 TIME-WAIT 或 CLOSE-WAIT 的连接数:
ss -s或ss -ant state close-wait
- 排查处于 TIME-WAIT 或 CLOSE-WAIT 的连接数:
nc(netcat):瑞士军刀级网络调试工具。- 快速测试远程端口是否开放:
nc -zv 192.168.1.100 3306 - 在服务器之间建立简易数据传输通道或临时监听端口。
- 快速测试远程端口是否开放:
结语
熟练运用 awk/sed 结合 vmstat、iostat、strace、tcpdump 等命令,可以让你在面对线上生产事故、服务突发异常或高并发性能调优时,快速定位系统瓶颈与代码根因。