服务器上怎么看java运行的程序jar包在哪里

在服务器上查找正在运行的 Java 程序的 JAR 包位置,可以通过以下方法:

1. 通过进程信息查找

  • 获取 Java 进程的 PID:在 Linux 服务器上,可以使用以下命令查找 Java 进程的 PID:

    bash复制

    ps -ef | grep java

    或者使用更精确的命令:

    bash复制

    pgrep -f java
  • 查找 JAR 包路径:找到 Java 进程的 PID 后,可以通过以下命令获取其工作目录:

    bash复制

    ps -p <PID> -o cwd=

    如果输出为 -,说明工作目录未正确报告,可以尝试:

    bash复制

    ls -l /proc/<PID>/cwd

    这会显示一个符号链接,指向实际的工作目录。

  • 在工作目录中查找 JAR 文件:使用 find 命令在工作目录中查找 JAR 文件:

    bash复制

    find /path/to/jar/directory -name "*.jar"

2. 通过命令行参数查找

  • 如果 Java 程序是通过命令行启动的,可以查看启动时的命令行参数。在 Linux 上,可以使用以下命令:

    bash复制

    ps -ef | grep java

    或者:

    bash复制

    cat /proc/<PID>/cmdline

    这会显示启动 Java 程序时的完整命令行参数,从中可以找到 JAR 包的路径。

3. 使用 Java 代码获取

如果你有权限访问 Java 程序的代码,可以在程序中添加以下代码来输出 JAR 包的路径:

java复制

String jarPath = this.getClass().getProtectionDomain().getCodeSource().getLocation().getPath();
System.out.println("JAR包位置: " + jarPath);

4. 在 Windows 服务器上查找

  • 获取 PID:使用以下命令查找 Java 进程的 PID:

    bash复制

    tasklist /FI "IMAGENAME eq java.exe"
  • 查找 JAR 包路径:使用 PowerShell 脚本根据 PID 查找 JAR 包路径:

    powershell复制

    function Get-JarPathByPID {
        param (
            [int]$PID
        )
        $process = Get-Process -Id $PID
        $commandLine = (Get-WmiObject Win32_Process | Where-Object { $_.ProcessId -eq $PID }).CommandLine
        if ($commandLine -match "-jar\s+([^\s]+)") {
            return $matches[1]
        } else {
            return "未找到 Jar 包路径"
        }
    }
    $pid = 1234  # 替换为实际的 PID
    $jarPath = Get-JarPathByPID -PID $pid
    Write-Host "Jar 包路径为: $jarPath"

通过以上方法,你可以快速定位服务器上运行的 Java 程序的 JAR 包位置。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值