温馨提示×

centos怎么定位java日志错误

小樊
48
2026-10-26 14:58:03
栏目: 编程语言

在 CentOS 上定位 Java 日志/错误,通常按下面几个思路来排查,从“看得见的地方”到“看不见的地方”。


一、先确认 Java 进程是否在运行

ps -ef | grep java
# 或
jps -l

如果能看到进程,记下 PID 和 启动命令(看 -D 参数、日志路径)。


二、查看应用自身日志(最常见)

多数 Java 项目会用:

  • Logback / Log4j2 / Log4j
  • 输出到文件,如:
    • /var/log/xxx/
    • 项目目录下的 logs/
# 常见位置
ls /var/log/
ls /opt/xxx/logs
ls ~/project/logs

# 实时查看
tail -f app.log

# 查找 ERROR
grep -n ERROR app.log
grep -n Exception app.log

三、查看启动脚本 / 日志重定向

如果是 nohup 或 systemd 启动:

1. nohup 启动

nohup java -jar app.jar > app.out 2>&1 &

查看:

tail -f app.out

2. systemd 服务

systemctl status xxx
journalctl -u xxx -f
journalctl -u xxx --since "10 min ago"

四、JVM 崩溃日志(非常重要)

当 Java 直接挂掉 时,可能会生成:

hs_err_pid<pid>.log

一般在:

  • 当前目录
  • /tmp
  • 应用目录
find / -name "hs_err_pid*.log" 2>/dev/null

重点看:

  • Reason
  • Current thread
  • Stack

五、内存 / 线程问题(OOM、卡死)

1. 查看内存占用

top -p PID
free -h

2. 查看线程

top -Hp PID

把高 CPU 的线程 ID 转成 16 进制:

printf "%x\n" 线程ID

再抓栈:

jstack PID | grep -A 20 0x线程ID

六、GC 问题

如果卡顿、变慢:

jstat -gcutil PID 1000

看:

  • FGC 是否很多
  • O 是否接近 100%

七、网络 / 端口问题

netstat -tunlp | grep java
ss -tunlp | grep PID

八、常见快速排查模板

# 1. 进程
jps -l

# 2. 日志
tail -f /path/to/app.log

# 3. 错误关键字
grep -nE "ERROR|Exception|OutOfMemory" app.log

# 4. JVM 崩溃
find / -name hs_err_pid*.log

如果你愿意,可以把:

  • Java 启动方式(jar / tomcat / systemd)
  • 报错日志片段 发出来,我可以直接帮你定位具体原因。

0 踩