Ubuntu的Java:find一个特定的程序的PID和杀死程序

我试图做一个应用程序,检查这个特定的应用程序是否正在运行,然后在指定的时间后终止应用程序。 我打算获得应用程序的PID。 我怎样才能得到应用程序的PID?

谢谢

Solutions Collecting From Web of "Ubuntu的Java:find一个特定的程序的PID和杀死程序"

你可以试试ps -aux | grep foobar ps -aux | grep foobar获取pid,然后发出kill命令,或者你可能想使用pkill foobar ,在这两种情况下foobar是你想终止的应用程序的名称。

用于java进程的pid ps -aux | grep java | awk '{print $2}' ps -aux | grep java | awk '{print $2}' ps -aux | grep java | awk '{print $2}'

你也可以打电话给jps ,它会给你一个进程列表。 这样做的一个缺点就是它只会显示发出jps命令的用户的进程。

你可以使用pidof来获得应用程序的pid

pidof <application name>

那么这个怎么样?

 public static void killAll(String process) { try { Vector<String> commands = new Vector<String>(); commands.add("pidof"); commands.add(process); ProcessBuilder pb = new ProcessBuilder(commands); Process pr = pb.start(); pr.waitFor(); if (pr.exitValue() != 0) return; BufferedReader outReader = new BufferedReader(new InputStreamReader(pr.getInputStream())); for (String pid : outReader.readLine().trim().split(" ")) { log.info("Killing pid: "+pid); Runtime.getRuntime().exec("kill " + pid).waitFor(); } } catch (Exception e) { e.printStackTrace(); } } } 

如果你从脚本启动这个应用程序,你可以通过使用特殊变量$!获得在后台创建的最后一个进程的pid $! ,这个值可以保存在一个文件上供以后在关机功能中使用。

下面是一个例子:

 nohup java -jar example.jar & echo $! > application.pid 

ps aux | awk '/java/ {print "sleep 10; kill "$2}' | bash

在Ubuntu中, ps -aux引发语法错误,其中ps aux作用。

将输出传送到与java匹配的awk ,然后睡眠10秒,然后用pId杀死程序。 注意管道打击。 随意指定无论你想要多长时间,或拨打你认为合适的其他电话。 我注意到大部分的其他答案忽略了在“一段时间”之后的部分问题。

你也可以通过调用pidof java | awk '{print "sleep 10; kill "$1}' | bash来完成这个任务 pidof java | awk '{print "sleep 10; kill "$1}' | bash pidof java | awk '{print "sleep 10; kill "$1}' | bash但选择是你的。 我通常使用ps aux。

你可能不得不调用ps并使用Runtime.exec kill Unix命令,并刮掉它们的输出。 我不认为一个Java程序可以轻松地检查/访问它没有创建的进程。

在Linux下查找java进程的pid

你可以参考这个链接…它告诉你关于找到一个具体的类名称的PID