文章目录
-
- [🛠️ Linux 常用调试命令速查表](#🛠️ Linux 常用调试命令速查表)
-
- 详细说明与实战示例
-
- [1. `tail -f filename`](#1.
tail -f filename
) - [2. `grep "关键字" 文件`](#2.
grep "关键字" 文件
) - [3. `ps aux | grep 进程名`](#3.
ps aux | grep 进程名
) - [4. `top` / `htop`](#4.
top
/htop
) - [5. `ss -tulnp | grep :端口`](#5.
ss -tulnp | grep :端口
) - [6. `lsof -i :端口`](#6.
lsof -i :端口
) - [7. `curl URL`](#7.
curl URL
) - [8. `telnet IP 端口` / `nc -zv IP 端口`](#8.
telnet IP 端口
/nc -zv IP 端口
) - [9. `find / 路径 -name "文件名"`](#9.
find / 路径 -name "文件名"
) - [10. `df -h` / `du -sh 目录`](#10.
df -h
/du -sh 目录
) - [11. `journalctl -u 服务名 -f`](#11.
journalctl -u 服务名 -f
) - [12. `ping 目标`](#12.
ping 目标
) - [13. `vmstat 1` / `iostat`](#13.
vmstat 1
/iostat
) - [14. `strace -p PID`](#14.
strace -p PID
) - [15. `tcpdump -i any port 端口`](#15.
tcpdump -i any port 端口
)
- [1. `tail -f filename`](#1.
- [✅ 推荐组合拳(实战排查流程)](#✅ 推荐组合拳(实战排查流程))
- [📌 总结](#📌 总结)
以下是一份 Linux 上常用的调试命令清单 ,适用于 Java 应用、Spring Boot、Nacos、微服务等场景的排查与监控 ,每个命令都包含 作用说明 和 实用示例 。
🛠️ Linux 常用调试命令速查表
命令 | 作用 | 示例 |
---|---|---|
tail -f |
实时查看文件末尾(常用于日志监控) | tail -f /var/log/app.log |
grep |
搜索文本内容 | grep "ERROR" app.log |
ps |
查看进程状态 | `ps aux |
top / htop |
实时查看系统资源使用(CPU、内存) | top |
netstat / ss |
查看网络连接和端口监听 | `ss -tulnp |
lsof |
查看文件或端口被哪个进程占用 | lsof -i :8848 |
curl |
发送 HTTP 请求(测试接口) | curl http://localhost:8080/health |
telnet / nc |
测试端口连通性 | telnet 10.135.10.33 8848 |
find |
查找文件 | find / -name "*.log" 2>/dev/null |
du / df |
查看磁盘使用情况 | df -h , du -sh /home |
journalctl |
查看 systemd 服务日志 | journalctl -u myapp.service -f |
ping |
测试网络连通性 | ping baidu.com |
vmstat / iostat |
查看系统性能(CPU、IO) | vmstat 1 |
strace |
跟踪系统调用(高级调试) | strace -p 1234 |
tcpdump |
抓包分析网络流量(高级) | tcpdump -i any port 8848 |
详细说明与实战示例
1. tail -f filename
作用:实时查看文件新增内容,常用于日志监控。
bash
# 实时查看最后 10 行日志
tail -f app.log
# 查看最后 50 行并实时跟踪
tail -n 50 -f app.log
# 跟踪多个日志文件
tail -f *.log
✅ 适用场景:观察 Spring Boot、Nacos 启动日志。
2. grep "关键字" 文件
作用:搜索日志中的特定内容(如 ERROR、Timeout)。
bash
# 查找所有 ERROR 日志
grep "ERROR" app.log
# 忽略大小写 + 显示行号
grep -in "error" app.log
# 结合 tail 实时过滤
tail -f app.log | grep "DataSource"
✅ 适用场景:快速定位启动失败原因。
3. ps aux | grep 进程名
作用:查看正在运行的进程。
bash
# 查看所有 Java 进程
ps aux | grep java
# 查看 Nacos 进程
ps aux | grep nacos
# 只显示 PID 和命令
ps -ef | grep java | grep -v grep
✅ 适用场景:确认服务是否在运行。
4. top
/ htop
作用:实时查看 CPU、内存占用。
bash
top
- 按
P
:按 CPU 排序 - 按
M
:按内存排序 - 按
q
:退出
安装 htop(更友好):
bash
sudo apt install htop # Ubuntu/Debian
sudo yum install htop # CentOS
htop
5. ss -tulnp | grep :端口
作用 :查看端口监听和占用情况(替代 netstat
)。
bash
# 查看 8848 端口是否被监听
ss -tulnp | grep :8848
# 查看所有监听端口
ss -tuln
# 参数说明:
# -t: TCP
# -u: UDP
# -l: 监听中
# -n: 数字显示(不解析服务名)
# -p: 显示进程
6. lsof -i :端口
作用:查看哪个进程占用了某个端口。
bash
# 查看 8080 端口被谁占用
lsof -i :8080
# 输出示例:
# COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
# java 1234 root 99u IPv6 123456 0t0 TCP *:8080 (LISTEN)
7. curl URL
作用:发送 HTTP 请求,测试接口是否正常。
bash
# 测试 Nacos 是否健康
curl http://10.135.10.33:8848/nacos/v1/console/health
# 带 header 请求
curl -H "Content-Type: application/json" -X POST -d '{"name":"test"}' http://localhost:8080/api/test
# 静默输出(-s)+ 返回状态码(-w)
curl -s -w "%{http_code}\n" -o /dev/null http://localhost:8080/health
8. telnet IP 端口
/ nc -zv IP 端口
作用:测试网络和端口是否可达。
bash
# 测试 Nacos HTTP 端口
telnet 10.135.10.33 8848
# 测试 gRPC 端口
nc -zv 10.135.10.33 9848
# 输出:
# Connection to 10.135.10.33 8848 port [tcp/*] succeeded!
如果提示
command not found
,安装:
bash
sudo apt install telnet netcat # Ubuntu
sudo yum install telnet nc # CentOS
9. find / 路径 -name "文件名"
作用:查找文件位置。
bash
# 查找所有 .log 文件
find / -name "*.log" 2>/dev/null
# 查找 nacos 的 startup.sh
find / -name "startup.sh" -path "*/nacos/bin/startup.sh" 2>/dev/null
# 查找 application.yml
find / -name "application.yml" 2>/dev/null
2>/dev/null
表示忽略权限错误。
10. df -h
/ du -sh 目录
作用:查看磁盘使用情况。
bash
# 查看磁盘整体使用
df -h
# 查看某个目录大小
du -sh /home
du -sh /var/log
11. journalctl -u 服务名 -f
作用:查看 systemd 服务日志(如果服务是用 systemctl 管理的)。
bash
# 查看 myapp 服务日志
journalctl -u myapp.service -f
# 查看最近 100 行
journalctl -u myapp.service -n 100
# 查看今天日志
journalctl -u myapp.service --since today
12. ping 目标
作用:测试网络连通性。
bash
ping baidu.com
ping 10.135.10.33
13. vmstat 1
/ iostat
作用:查看系统性能(CPU、内存、IO)。
bash
# 每秒刷新一次
vmstat 1
# 安装 sysstat 后使用 iostat
iostat -x 1
14. strace -p PID
作用:跟踪进程的系统调用(高级调试,定位卡顿、死锁)。
bash
# 跟踪 Java 进程系统调用
strace -p 1234
# 记录到文件
strace -o trace.log -p 1234
15. tcpdump -i any port 端口
作用:抓包分析网络通信(高级)。
bash
# 抓取 8848 端口的流量
tcpdump -i any port 8848 -n
# 保存到文件
tcpdump -i any port 8848 -w nacos.pcap
用 Wireshark 打开
.pcap
文件分析。
✅ 推荐组合拳(实战排查流程)
当你遇到"服务启动失败"时,可以按顺序执行:
bash
# 1. 看日志
tail -f logs/app.log | grep -i error
# 2. 查进程
ps aux | grep java
# 3. 查端口
ss -tulnp | grep :8080
# 4. 测试连通性
telnet 10.135.10.33 8848
# 5. 查配置文件
find / -name "application.yml" 2>/dev/null
# 6. 查磁盘空间
df -h
📌 总结
这些命令是 运维、开发、调试的必备技能,建议收藏或打印出来,遇到问题时按图索骥。