高级 Linux 命令推荐学习(后端/DevOps 必备技能)
视频看了几百小时还迷糊?关注我,几分钟让你秒懂!
作为后端开发、DevOps 工程师或 SRE,掌握基础的 ls、cd、grep 只能让你“活着”,但真正拉开差距的是对高级命令的熟练运用。这些命令能让你在排查线上问题、自动化运维、性能调优时快人十倍。
本文精选 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% 日常场景。
四、避坑指南(血泪经验)
- 别在生产环境直接
tcpdump不加限制 → 可能撑爆磁盘 strace会显著降低进程性能 → 仅用于临时诊断awk/sed处理大文件前先head预览 → 避免正则写错xargs遇到文件名含空格会出错 → 用find ... -print0 | xargs -0
五、结语
高级命令不是“炫技”,而是解决问题的武器库。当你能用一行 strace 定位诡异 bug,用 tcpdump 证明不是你的锅,用 awk 5 秒生成日报——你就真正从“码农”蜕变为“工程师”。
记住:工具不会让你变强,但会放大你的能力。
视频看了几百小时还迷糊?关注我,几分钟让你秒懂!
更多推荐

所有评论(0)