Linux调试命令速查:Java/微服务必备

文章目录

    • [🛠️ 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 端口)
    • [✅ 推荐组合拳(实战排查流程)](#✅ 推荐组合拳(实战排查流程))
    • [📌 总结](#📌 总结)

以下是一份 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

📌 总结

这些命令是 运维、开发、调试的必备技能,建议收藏或打印出来,遇到问题时按图索骥。

相关推荐
刘一说3 小时前
Spring Boot+Nacos+MySQL微服务问题排查指南
spring boot·mysql·微服务
IT·陈寒3 小时前
怎么这么多 StringUtils —— Apache、Spring、Hutool 全面对比
java·spring·apache
枫の准大一3 小时前
【Linux游记】基础指令篇
linux
ypf52083 小时前
OrbStack 配置国内镜像加速
linux
大咖分享课3 小时前
系统越拆越乱?你可能误解了微服务的本质!
微服务·云原生·架构
AAA修煤气灶刘哥3 小时前
MySQL 查文本查哭了?来唠唠 ES 这货:从 “啥是 ES” 到 Java 撸代码,一篇整明白!
java·后端·elasticsearch
金銀銅鐵3 小时前
[Java] 浅析密封类(Sealed Classes) 在 class 文件中是如何实现的
java·后端
Hello.Reader3 小时前
一文通关 Proto3完整语法与工程实践
java·linux·数据库·proto3
DashingGuy3 小时前
算法(keep learning)
java·数据结构·算法