如何找出正在使用的JRE?

Vis*_*a k 5 java jdk

我的系统中有一个 Java .jar 正在运行。我怎么知道那个 .jar 正在使用哪个 JRE?我在多个位置有多个 JRE。

which java命令产生

/usr/bin/java
Run Code Online (Sandbox Code Playgroud)

$JAVA_HOME 被设定为 /usr/java/jdk-1.6.0

ps -ef 产生

\xyzusr     5206     1  0 02:10 ?        00:00:00 ScrapJAR -p -u 2694 -g 15464 -- java -server -XX:+AggressiveHeap -Xms2048m -Xmx2048m -Xss512k
Run Code Online (Sandbox Code Playgroud)

slm*_*slm 8

最简单的方法是使用命令行工具lsof及其-p开关,以便您可以列出此特定进程正在使用的文件。

$ sudo lsof -p 5206 | grep jre
Run Code Online (Sandbox Code Playgroud)

例子

这是我的 Chrome 进程,只是为了让您了解输出的样子。

$ sudo lsof -p 1376 | head -10
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
      Output information may be incomplete.
COMMAND  PID USER   FD      TYPE             DEVICE  SIZE/OFF      NODE NAME
chrome  1376 saml  cwd       DIR                0,3         0  46546425 /proc/10802/fdinfo
chrome  1376 saml  rtd       DIR                0,3         0  46546425 /proc/10802/fdinfo
chrome  1376 saml  txt       REG              253,1  93187864   1837056 /opt/google/chrome/chrome
chrome  1376 saml  DEL       REG               0,17            46544680 /dev/shm/.com.google.Chrome.1ciABr
chrome  1376 saml  DEL       REG               0,17           127971521 /dev/shm/.com.google.Chrome.t7ByaK
chrome  1376 saml  mem       REG              253,1   3334400   1837130 /opt/google/chrome/lib/libpeerconnection.so
chrome  1376 saml  mem       REG              253,1  17313408   1835692 /opt/google/chrome/PepperFlash/libpepflashplayer.so
chrome  1376 saml  mem       REG              253,1   6842800   1837141 /opt/google/chrome/libwidevinecdm.so
chrome  1376 saml  mem       REG              253,1    780024    559781 /usr/lib64/libsqlite3.so.0.8.6
Run Code Online (Sandbox Code Playgroud)