我正在编写几个java程序,在完成我想做的任何事情后,需要在单独的JVM中终止/清理。为此,我需要获取我正在创建的java进程的PID。
答案 0 :(得分:6)
jps -l
适用于Windows和Unix。您可以使用Runtime.getRuntime().exec
从java程序中调用此命令。 jps -l
的示例输出如下
9412 foo.bar.ClassName
9300 sun.tools.jps.Jps
您可能需要解析此问题,然后检查完全限定名称,然后从相应的行获取pid。
private static void executeJps() throws IOException {
Process p = Runtime.getRuntime().exec("jps -l");
String line = null;
BufferedReader in = new BufferedReader(new InputStreamReader(
p.getInputStream(), "UTF-8"));
while ((line = in.readLine()) != null) {
String [] javaProcess = line.split(" ");
if (javaProcess.length > 1 && javaProcess[1].endsWith("ClassName")) {
System.out.println("pid => " + javaProcess[0]);
System.out.println("Fully Qualified Class Name => " +
javaProcess[1]);
}
}
}
答案 1 :(得分:0)
您可以尝试执行命令
pidof <program name>
为了找到你的程序的pid。
在Linux环境中
答案 2 :(得分:0)
请注意,Java 9将公开一些与系统无关的方法,例如:
System.out.println("Your pid is " + Process.getCurrentPid());