【问题标题】:Fast way to run shell commands运行 shell 命令的快速方法
【发布时间】:2012-06-28 16:48:18
【问题描述】:

我正在开发一个 Java 程序,该程序应该尽快重复杀死两个进程,因为它们在被杀死时会不断重启。当然,它不应该使用太多的 CPU 时间。我在 python 中编写了几乎相同的程序,它使用大约 5% 的 CPU 运行良好。
我开始使用Runtime.exec"ps -ax" 列出所有正在运行的进程,然后在字符串中搜索不需要的进程的名称,然后使用"killall -9" + process_name 运行exec 来杀死它。这只是我能想到的第一种方式,任何想法都会受到赞赏。
但是当我执行代码时,我的计算机一直运行得很热,经过一些时间测试后,我发现exec 命令需要大约 15 到 25 毫秒。现在为什么要花这么长时间,有没有更快的方法来完成这项工作?
顺便说一句,我使用 mac os,并不关心解决方案是否独立于平台。

【问题讨论】:

  • 首先停止进程重启会更好吗?
  • 我不知道你为什么需要做这样的事情。但如果你真的必须,为什么选择Java?它不太适合这种任务。
  • 25ms 不算太多,我猜你试图杀死的那些进程在启动时会浪费更多资源
  • (Emil Vikström) 这是我不想要的两个守护进程,但由于我不是管理员,所以我认为我必须反复杀死它们 (tofarr) 是的,但我怎样才能阻止它们重新启动。我不是管理员,但我拥有这些进程,所以我可以杀死它们。 @MichałKosmulski 1. 因为它很容易上手。我的 python 脚本工作正常,但我总是必须启动 IDLE 才能运行它,而使用 java 我可以创建一个 jar 或类文件。我还编写了一个小型 java 程序,它在同一个文件夹中启动我的小型 python 脚本,我可以压缩共享,但对我来说似乎很愚蠢。 2.我在学习java

标签: java shell exec


【解决方案1】:

我同意 Java 绝对不是这项工作的正确工具。我也同意其他人的观点,首先这似乎是一件非常愚蠢的事情。如果是我,我首先会专注于让守护进程不运行。

我只想编写一个 bash 脚本,它具有您需要的所有功能,并且会节省一些进程创建时间。您可以将 ps 的输出输入 grep 以获取您需要消除的进程,然后将其传递给 kill。

如果您use ps parameters 按名称或用户或组选择正确的进程,您可以更便宜地运行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多