开发者

Linux调试命令速查之Java/微服务必备分享

目录
  • linux 常用调试命令速查表
    • 详细说明与实战示例
      • 1.tail -f filename
      • 2.grep "关键字" 文件
      • 3.ps aux | grep 进程名
      • 4.top/htop
      • 5.ss -javascripttulnp | grep :端口
      • 6.lsof -i :端口
      • 7.curl URL
      • 8.telnet IP 端口/nc -zv IP 端口
      • 9.find / 路径 -name "文件名"
      • 10.df -h/du -sh 目录
      • 11.journalctl -u 服务名 -f
      • 12.ping 目标
      • 13.vmstat 1/IOStat
      • 14.strace -p PID
      • 15.tcpdump -i any port 端口
  • 推荐组合拳(实战排查流程)
    • 总结

      Linux 上常用的调试命令清单Java 应用、Spring Boot、Nacos、微BTRghcayj服务等场景的排查与监控作用说明实用示例

      Linux 常用调试命令速查表

      命令作用示例
      tail -f实时查看文件末尾(常用于日志监控)tail -f /var/log/app.log
      grep搜索文本内容grep "ERROR" app.log
      ps查看进程状态ps aux | grep java
      top / htop实时查看系统资源使用(CPU、内存)top
      netstat / ss查看网络连接和端口监听ss -tulnp | grep :8080
      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

      作用:实时查看文件新增内容,常用于日志监控。

      # 实时查看最后 10 行日志
      tail -f app.log
      
      # 查看最后 50 行并实时跟踪
      tail -n 50 -f app.log
      
      # 跟踪多个日志文件
      tail -f *.log
      

      适用场景:观察 Spring Boot、Nacos 启动日志。

      2.grep "关键字" 文件

      作用:搜索日志中的特定内容(如 ERROR、Timeout)。

      # 查找所有 ERROR 日志
      grep "ERROR" app.log
      
      # 忽略大小写 + 显示行号
      grep -in "error" app.log
      
      # 结合 tail 实时过滤
      tail -f app.log | grep "DataSource"
      

      适用场景:快速定位启动失败原因。

      3.ps aux | jsgrep 进程名

      作用:查看正在运行js的进程。

      # 查看所有 Java 进程
      ps aux | grep java
      
      # 查看 Nacos 进程
      ps aux | grep nacos
      
      # 只显示 PID 和命令
      ps -ef | grep java | grep -v grep
      

      适用场景:确认服务是否在运行。

      4.top/htop

      作用:实时查看 CPU、内存占用。

      top
      
      • P:按 CPU 排序
      • M:按内存排序
      • q:退出

      安装 htop(更友好):

      sudo apt install htop  # Ubuntu/Debian
      sudo yum install htop  # Centos
      htop
      

      5.ss -tulnp | grep :端口

      作用:查看端口监听和占用情况(替代 netstat)。

      # 查看 8848 端口是否被监听
      ss -tulnp | grep :8848
      
      # 查看所有监听端口
      ss -tuln
      
      # 参数说明:
      # -t: TCP
      # -u: UDP
      # -l: 监听中
      # -n: 数字显示(不解析服务名)
      # -p: 显示进程
      

      6.lsof -i :端口

      作用:查看哪个进程占用了某个端口。

      # 查看 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 请求,测试接口是否正常。

      # 测试 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 端口

      作用:测试网络和端口是否可达。

      # 测试 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,安装:

      sudo apt install telnet netcat  # Ubuntu
      sudo yum install telnet nc      # CentOS
      

      9.find / 路径 -name "文件名"

      作用:查找文件位置。

      # 查找所有 .log 文件
      find / -name js"*.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 目录

      作用:查看磁盘使用情况。

      # 查看磁盘整体使用
      df -h
      
      # 查看某个目录大小
      du -sh /home
      du -sh /var/log
      

      11.journalctl -u 服务名 -f

      作用:查看 systemd 服务日志(如果服务是用 systemctl 管理的)。

      # 查看 myapp 服务日志
      journalctl -u myapp.service -f
      
      # 查看最近 100 行
      journalctl -u myapp.service -n 100
      
      # 查看今天日志
      journalctl -u myapp.service --since today
      

      12.ping 目标

      作用:测试网络连通性。

      ping baidu.com
      ping 10.135.10.33
      

      13.vmstat 1/iostat

      作用:查看系统性能(CPU、内存、IO)。

      # 每秒刷新一次
      vmstat 1
      
      # 安装 sysstat 后使用 iostat
      iostat -x 1
      

      14.strace -p PID

      作用:跟踪进程的系统调用(高级调试,定位卡顿、死锁)。

      # 跟踪 Java 进程系统调用
      strace -p 1234
      
      # 记录到文件
      strace -o trace.log -p 1234
      

      15.tcpdump -i any port 端口

      作用:抓包分析网络通信(高级)。

      # 抓取 8848 端口的流量
      tcpdump -i any port 8848 -n
      
      # 保存到文件
      tcpdump -i any port 8848 -w nacos.pcap
      

      用 Wireshark 打开 .pcap 文件分析。

      推荐组合拳(实战排查流程)

      当你遇到“服务启动失败”时,可以按顺序执行:

      # 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
      

      总结

      这些命令是 运维、开发、调试的必备技能

      以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。

      0

      上一篇:

      下一篇:

      精彩评论

      暂无评论...
      验证码 换一张
      取 消

      最新开发

      开发排行榜