服务器上怎么看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
-o cwd= 如果输出为
-
,说明工作目录未正确报告,可以尝试:bash复制
ls -l /proc/
/cwd 这会显示一个符号链接,指向实际的工作目录。
-
在工作目录中查找 JAR 文件:使用
find
命令在工作目录中查找 JAR 文件:bash复制
find /path/to/jar/directory -name "*.jar"
2. 通过命令行参数查找
-
如果 Java 程序是通过命令行启动的,可以查看启动时的命令行参数。在 Linux 上,可以使用以下命令:
bash复制
ps -ef | grep java
或者:
bash复制
cat /proc/
/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 "-jars+([^s]+)") { return $matches[1] } else { return "未找到 Jar 包路径" } } $pid = 1234 # 替换为实际的 PID $jarPath = Get-JarPathByPID -PID $pid Write-Host "Jar 包路径为: $jarPath"
通过以上方法,你可以快速定位服务器上运行的 Java 程序的 JAR 包位置。