在linux下获取javaws jnlp applet的PID

时间:2010-08-16 11:56:35

标签: java linux jnlp

我正在尝试从bash运行java(jnlp)applet并获取已创建进程的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 "$@"

有没有办法修改,所以它给出了子进程的PID?

2 个答案:

答案 0 :(得分:3)

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


示例:

This agent library包含一个premain方法,用于将当前PID(通过JNA访问)存储在文本文件中。

假设getpid.jarjna.jar位于当前目录中,可以使用以下命令启动:

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

这将在将PID写入文件pid.txt后启动applet。

答案 1 :(得分:1)

我不知道这是否可以解决问题,但是为了找到一个pid,更一般地说,我使用这个别名

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

然后

prs my_prog