在linux下获取javaws jnlp applet的PID

我试图从bash运行一个Java(jnlp)小程序,并获得创build的进程的PID。

使用这个命令:

javaws myapplet.jnlp > /dev/null & echo $! 

这将返回加载jnlp的java的第一个实例的pid; 我猜,但与最终的java进程运行无关。

任何线索?

找出原来的javaws如下:

 #!/bin/sh prog="$0" while [ -h "$prog" ]; do prog=$(readlink -f $prog); done [ $# -eq 0 ] && set -- -viewer exec $(dirname $prog)/javaws.real "$@" 

有没有一种方法来修改,以便给出subprocess的PID?

创建一个代理.jar文件并使用javaws的-J选项加载。 -J参数直接传递给目标虚拟机,并与.jnlp文件中的虚拟机参数相结合,因此您可以在与应用程序相同的进程中加载​​本地代理程序库。


例:

此代理程序库包含一个premain方法,用于将当前PID(通过JNA访问)存储在文本文件中。

假设getpid.jarjna.jar在当前目录中,可以使用:

 javaws -J-javaagent:getpid.jar=pid.txt myapplet.jnlp 

这将在将PID写入文件pid.txt后启动该小程序。

我不知道这是否会做到这一点,但要找到一个PID,更一般地说,我使用这个别名

 alias prs='ps faux|grep -v grep|grep "$@"' 

接着

 prs my_prog