java - 运行 shell 命令的快速方法

标签 java shell exec

我正在开发一个 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/

相关文章:

bash - 如何下载 csv 中的 URL 并根据列值命名输出

exec - WSH .Exec 和 .Execute 将不会运行自定义 Jscript 文件

c - 在linux中使用execv使用 './'命令

java - 缩写还是全称?

Java:如何计算String[]数组中具有两个相同连续字母的单词的分数

java - gradle构建后无法从jar中的资源加载文件

linux - 通过在 linux 中删除 url 参数来重命名文件

java - 如何在ebean中急切加载一个集合?

linux - 每秒 Ping 服务器以查看正常运行时间

java - getRuntime().exec(String[]) 函数的行为与 getRuntime().exec(String) (Android) 不同