我正在开发一个 Java 程序,该程序应该尽快重复终止两个进程,因为它们在被终止时会不断重新启动。当然,它不应该使用太多的CPU时间。我已经用 python 编写了几乎相同的程序,并且它使用大约 5% 的 CPU 运行良好。
我开始使用 Runtime.exec
和 "ps -ax"
列出所有正在运行的进程,然后在字符串中搜索不需要的进程名称,然后使用 运行 exec “killall -9” + process_name
来杀死它。这只是我能想到的第一种方法,任何想法都会受到赞赏。
但是当我执行代码时,我的计算机一直运行得很热,经过一些计时测试,我发现 exec 命令需要大约 15 到 25 毫秒。现在为什么要花那么长时间?有没有更快的方法来完成这项工作?
顺便说一句,我使用 macOS,并不关心解决方案是否与平台无关。
最佳答案
我同意 Java 绝对不是适合这项工作的工具。我也同意其他人的观点,即这首先看起来是一件非常愚蠢的事情。如果是我,我会首先专注于让守护进程不运行。
我只需编写一个 bash 脚本,它具有您需要的所有功能,并且可以节省一些进程创建时间。您可以将 ps 的输出输入 grep 以获取需要消除的进程,然后将其传递给终止。
如果你use ps parameters,你可以让它运行得更便宜。按名称、用户或组选择正确的进程。
关于java - 运行 shell 命令的快速方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11249328/