2010-08-16 69 views
3

我想從bash運行java(jnlp)applet並獲取創建的進程的PID。在linux下獲取javaws 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 "[email protected]" 

是否有修改的過程中它的子進程的PID的方法嗎?

回答

3

創建agent .jar file和負載使用-D選項javaws-J參數直接傳遞給目標VM,並與.jnlp文件中的vm參數組合,因此您可以在與應用程序相同的進程中加載​​本地代理程序庫。


實施例:

This agent library包含在文本文件中一個premain方法存儲當前PID(經由JNA訪問)。

假設getpid.jarjna.jar是在當前目錄中它可以與啓動:

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

這將寫入其PID號的文件pid.txt後啓動小程序。

1

我不知道這是否會做的伎倆,而是找一個pid,更普遍的,我用這個別名

alias prs='ps faux|grep -v grep|grep "[email protected]"' 

然後

prs my_prog 
+0

Mmh不是我正在尋找的,因爲我想在啓動時得到PID,而不是之後,我也有很多這個小程序正在運行 – Disco 2010-08-16 12:19:21