视频看了几百小时还迷糊?关注我,几分钟让你秒懂!


作为后端开发、DevOps 工程师或 SRE,掌握基础的 lscdgrep 只能让你“活着”,但真正拉开差距的是对高级命令的熟练运用。这些命令能让你在排查线上问题、自动化运维、性能调优时快人十倍

本文精选 8 个高价值高级 Linux 命令,结合真实场景 + 反例 + 注意事项,手把手教你从“会用”到“精通”。


一、为什么学高级命令?

  • 🚀 效率提升:1 行命令 = 别人 10 分钟手动操作
  • 🔍 深度排查:定位 CPU 100%、内存泄漏、网络超时等疑难杂症
  • 🤖 自动化基石:Shell 脚本、CI/CD、监控告警都依赖这些工具
  • 💼 面试加分:大厂必问“如何分析线程堆栈?”、“怎么查慢 I/O?”

二、8 个必须掌握的高级命令(附实战)

✅ 1. strace —— 系统调用追踪器(调试神器)

场景:程序卡住不动?文件打不开?权限错误?
# 追踪 Java 进程的所有系统调用
strace -p 12345

# 只看文件相关调用(open, read, write)
strace -e trace=file -p 12345

# 启动时追踪(适合短命进程)
strace -o debug.log java -jar app.jar

💡 案例
Spring Boot 应用启动失败,日志只说 “Config file not found”。
strace -e openat java -jar app.jar 2>&1 | grep application.yml
发现它在 /etc/myapp/ 下找配置,而你放到了 /opt/config/ → 路径配错!

❌ 反例:
strace -p 12345 > log.txt  # 错!strace 默认输出到 stderr

✅ 正确:

strace -p 12345 2> strace.log

✅ 2. lsof —— 列出打开的文件(不止是文件!)

场景:端口被占?删了文件磁盘没释放?连接数暴增?
# 查看谁在用 8080 端口
lsof -i :8080

# 查看某进程打开了哪些文件/网络连接
lsof -p 12345

# 找出已删除但仍被占用的大文件(常见于日志未重启)
lsof +L1

💡 案例
df 显示磁盘 90% 满,但 du 看目录很小。
执行 lsof +L1 发现 app.log (deleted) 占了 20GB —— 原来应用没重启,日志句柄还在!


✅ 3. tcpdump —— 网络抓包分析(比 Wireshark 更轻量)

场景:API 超时?数据库连接慢?第三方回调失败?
# 抓取发往 MySQL 的包(3306)
tcpdump -i any -nn port 3306 -w mysql.pcap

# 抓取特定 IP 的 HTTP 流量
tcpdump -i eth0 host 192.168.1.100 and port 80

# 实时查看(慎用,输出太多)
tcpdump -i any -A port 8080

💡 案例
用户反馈支付回调丢失。
tcpdump host 微信IP and port 443 抓包,发现服务器返回了 500 → 查应用日志定位异常。

⚠️ 注意:
  • 需要 root 权限
  • 生产环境抓包要加 -c 100 限制数量,避免磁盘爆满

✅ 4. awk + sed —— 文本处理双剑客

场景:日志结构化、批量替换配置、提取指标
# 提取 Nginx 日志中访问最频繁的 IP
awk '{print $1}' access.log | sort | uniq -c | sort -nr | head -10

# 批量替换配置文件中的数据库地址
sed -i 's/old-db-host/new-db-host/g' application-prod.yml

# 统计各 HTTP 状态码数量
awk '{print $9}' access.log | sort | uniq -c

💡 技巧
结合 | 管道,实现复杂分析:

# 找出耗时超过 2 秒的请求
awk '$NF > 2000 {print $0}' app.log

✅ 5. watch —— 实时监控命令输出

场景:观察进程变化、连接数增长、磁盘写入
# 每秒刷新一次 netstat(看 ESTABLISHED 连接数)
watch -n 1 'netstat -an | grep ESTABLISHED | wc -l'

# 监控 Java 进程是否存在
watch -n 2 'jps | grep JarLauncher'

✅ 比手动反复敲命令高效 100 倍!


✅ 6. xargs —— 批量处理利器

场景:对 find 结果批量操作
# 删除 7 天前的日志
find /var/log -name "*.log" -mtime +7 | xargs rm -f

# 并行压缩日志(-P 4 表示 4 个进程)
find . -name "*.log" | xargs -P 4 -I {} gzip {}
❌ 反例:
find . -name "*.log" -exec rm {} \;  # 效率低,每文件起一个进程

✅ 用 xargs 更高效!


✅ 7. journalctl —— systemd 日志管理(现代 Linux 标配)

场景:查看服务日志、按时间过滤、跟踪启动问题
# 查看 myapp 服务的日志
journalctl -u myapp.service

# 查看最近 1 小时日志
journalctl --since "1 hour ago"

# 实时跟踪
journalctl -u myapp.service -f

💡 如果你用 systemd 管理 Spring Boot 应用(推荐),这是最佳日志入口!


✅ 8. htop / iotop / iftop —— 专用监控工具

命令 用途
htop 彩色版 top,支持鼠标、树形进程
iotop 查看哪个进程在疯狂读写磁盘
iftop 实时显示网络带宽使用(按连接)
# 安装(Ubuntu/Debian)
sudo apt install htop iotop iftop

# 使用
htop        # 进程监控
iotop       # 磁盘 I/O 监控
iftop -i eth0  # 网络流量监控

💡 案例
系统变慢,htop 看 CPU 正常,iotop 发现 rsyslogd 在狂写磁盘 → 日志配置错误!


三、学习路线建议

阶段 目标 推荐命令
入门 日常操作 grep, tail, ps, netstat
进阶 问题排查 strace, lsof, tcpdump, awk
高手 性能调优 & 自动化 iotop, sar, vmstat, xargs, sed
专家 内核级分析 perf, eBPF, ftrace

📌 建议:先精通前 5 个命令,覆盖 90% 日常场景。


四、避坑指南(血泪经验)

  1. 别在生产环境直接 tcpdump 不加限制 → 可能撑爆磁盘
  2. strace 会显著降低进程性能 → 仅用于临时诊断
  3. awk/sed 处理大文件前先 head 预览 → 避免正则写错
  4. xargs 遇到文件名含空格会出错 → 用 find ... -print0 | xargs -0

五、结语

高级命令不是“炫技”,而是解决问题的武器库。当你能用一行 strace 定位诡异 bug,用 tcpdump 证明不是你的锅,用 awk 5 秒生成日报——你就真正从“码农”蜕变为“工程师”。

记住:工具不会让你变强,但会放大你的能力。


视频看了几百小时还迷糊?关注我,几分钟让你秒懂!

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐