如何在Linux下快速找到Java进程启动的JAR文件
在线上环境中,当CPU占用率异常高时,经常需要定位到是哪个Java进程导致的,并进一步找到该进程启动的JAR文件。以下提供了几种方法来帮助你快速找到这些信息。
方法一:通过/proc
文件系统
- 查看Java进程编号:
使用
top
命令或其他进程管理工具查看Java进程的PID(进程编号)。 - 查看进程文件:
/proc/[PID]/exe
是一个指向进程实际执行文件的符号链接。但通常这会指向Java运行时(如/usr/java/jdk1.8.0_121/jre/bin/java
),而不是JAR文件本身。 - 查看进程启动目录:
/proc/[PID]/cwd
是一个指向进程当前工作目录的符号链接。这通常是JAR文件所在的目录,但JAR文件的完整路径和名称不会直接给出。
你可以使用ls -l /proc/[PID]/cwd
来查看该目录的内容,并手动查找JAR文件。
方法二:使用jps
命令
jps
(Java Virtual Machine Process Status Tool)是JDK提供的一个命令行工具,它可以列出所有正在运行的Java进程,并显示它们的PID以及启动的JAR文件或类的完全限定名。
使用jps -l
命令可以列出带有JAR文件或类名的Java进程。
方法三:使用pgrep
命令
pgrep
命令用于查找与给定模式匹配的进程,并打印出它们的PID。结合-a
选项,pgrep
还可以打印出完整的命令行参数。
使用pgrep -a java
命令可以列出所有包含java
关键字的进程及其完整的命令行参数。这通常包括启动Java进程的完整命令,包括JAR文件的路径。
总结
/proc
文件系统提供了关于进程的详细信息,但可能需要手动查找JAR文件。jps
命令直接列出了Java进程的PID和启动的JAR文件或类名,非常方便。pgrep
命令可以列出包含java
关键字的进程及其完整命令行参数,通常也包含JAR文件的路径。
在实际使用中,你可以根据具体情况选择最适合你的方法。如果只需要快速查看正在运行的Java进程及其启动的JAR文件,jps
命令通常是最简单直接的选择。