【问题标题】:Ubuntu Java: Find a specific program's pid and kill the programUbuntu Java:查找特定程序的 pid 并终止该程序
【发布时间】:2011-12-07 09:58:39
【问题描述】:

我正在尝试创建一个应用程序来检查此特定应用程序是否正在运行,然后在指定时间后终止该应用程序。我打算获取应用程序的pid。如何获取应用的 pid?

谢谢

【问题讨论】:

    标签: java linux ubuntu kill pid


    【解决方案1】:

    那么这个怎么样?

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

    【讨论】:

      【解决方案2】:

      Find the pid of a java process under Linux

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

      【讨论】:

        【解决方案3】:

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

        在 Ubuntu 中,ps -aux 会引发语法错误,而 ps aux 可以工作。

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

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

        【讨论】:

          【解决方案4】:

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

          pidof &lt;application name&gt;

          【讨论】:

            【解决方案5】:

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

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

            【讨论】:

              【解决方案6】:

              您可以尝试 ps -aux | grep foobar 获取 pid,然后针对它发出 kill 命令,或者您可能想要使用 pkillfoobar,在这两种情况下,foobar 都是您应用的名称想终止。

              【讨论】:

                【解决方案7】:

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

                下面是一个例子:

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

                【讨论】:

                  【解决方案8】:

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

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 2011-06-05
                    • 1970-01-01
                    • 2014-04-22
                    • 2011-02-05
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    相关资源
                    最近更新 更多