Linux 下查看 Java 启动的 JAR 包

在 Linux 系统中,Java 应用程序通常以 JAR(Java Archive)包的形式运行。JAR 包是一种打包 Java 类和资源文件的方式,便于分发和部署。本文将介绍如何在 Linux 下查看正在运行的 Java 应用程序的 JAR 包信息。

查看 Java 进程

首先,我们需要找到正在运行的 Java 进程。可以使用 ps 命令配合 grep 来过滤出 Java 进程:

ps aux | grep java

这将列出所有包含 "java" 字符串的进程。输出可能类似于:

user      1234  0.0  0.1  12345 12345 ?        Ss   Jan01   0:00 java -jar myapp.jar

从上面的输出中,我们可以看到有一个名为 "myapp.jar" 的 Java 应用程序正在运行。

查看 JAR 包路径

接下来,我们可以使用 lsof 命令查看 Java 进程打开的文件列表,以找到 JAR 包的路径:

lsof -p <pid>

<pid> 替换为 Java 进程的进程 ID。例如,在上面的例子中,进程 ID 是 1234,所以命令将是:

lsof -p 1234

输出将包括 Java 进程打开的所有文件,包括 JAR 包。找到以 ".jar" 结尾的文件路径。

使用 jcmd 查看 JAR 信息

jcmd 是 Java 诊断命令工具,可以用来获取 Java 进程的详细信息。要查看 JAR 包的详细信息,可以使用以下命令:

jcmd <pid> VM.flags

<pid> 替换为 Java 进程的进程 ID。这将列出 Java 进程的所有启动参数,包括 JAR 包的路径。

使用 jstack 查看线程堆栈

jstack 是另一个 Java 诊断工具,可以用来查看 Java 进程的线程堆栈信息。要查看线程堆栈,可以使用以下命令:

jstack <pid>

这将输出 Java 进程的所有线程的堆栈跟踪,包括每个线程正在执行的方法和类。

关系图

下面是一个简单的关系图,展示了 Java 进程、JAR 包和诊断工具之间的关系:

erDiagram
    JAVA_PROCESS ||--o JAR_PACKAGE : contains
    JAVA_PROCESS ||--o DIAGNOSTIC_TOOL : uses
    JAR_PACKAGE ||--o DIAGNOSTIC_TOOL : analyzed_by

状态图

下面是一个状态图,展示了使用诊断工具查看 Java 进程的步骤:

stateDiagram
    [*] --> Finding_Java_Process: Find Java process
    Finding_Java_Process --> Viewing_JAR_Paths: View JAR paths
    Viewing_JAR_Paths --> Using_jcmd: Use jcmd to view JAR info
    Using_jcmd --> Using_jstack: Use jstack to view thread stack
    [*] --> Using_jstack

结语

在 Linux 下查看 Java 启动的 JAR 包是一个简单的过程,涉及到使用 pslsofjcmdjstack 等诊断工具。通过这些工具,我们可以轻松地找到正在运行的 Java 应用程序的 JAR 包路径和相关信息。这有助于我们更好地了解和监控 Java 应用程序的运行状态。