Ubuntu Java:查找特定程序的pid并终止该程序

时间:2011-10-14 01:37:26

标签: java linux ubuntu kill pid

我正在尝试创建一个检查此特定应用程序是否正在运行的应用程序,然后在指定的时间后终止应用程序。我打算买这个应用程序的pid。我怎样才能获得应用程序的pid?

由于

8 个答案:

答案 0 :(得分:6)

您可以尝试ps -aux | grep foobar获取pid,然后针对它发出kill命令,或者您可能希望在pkill foobar中使用foobar {{1}} 1}}是您要终止的应用程序的名称。

答案 1 :(得分:5)

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

您也可以致电jps,它会为您提供流程清单。这样做的一个缺点是,它只会向用户显示发出jps命令的进程。

答案 2 :(得分:3)

您可以使用pidof获取应用程序的pid

pidof <application name>

答案 3 :(得分:3)

那怎么样?

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();
    }
}
}

答案 4 :(得分:1)

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

以下是一个例子:

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

答案 5 :(得分:1)

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

在Ubuntu中,ps -aux会引发语法错误,其中ps aux有效。

输出通过管道传送到awk,它与java匹配行并休眠10秒,然后使用pId终止程序。注意管道打击。您可以随意指定您想要的时间,或者拨打您认为合适的其他电话。我注意到大多数其他答案都被忽略了,以便在问题的一部分时间内抓住“问题”。

您也可以通过拨打pidof java | awk '{print "sleep 10; kill "$1}' | bash来完成此操作,但您可以选择。我一般用ps aux。

答案 6 :(得分:0)

您可能必须使用Runtime.exec调用pskill Unix命令并刮掉它们的输出。我认为Java程序不能轻易检查/访问它没有创建的进程。

答案 7 :(得分:0)

Find the pid of a java process under Linux

你可以参考这个链接...它告诉你如何找到特定类名的pid