gpt4 book ai didi

java - 以低优先级启动进程(使用 Runtime.exec/ProcessBuilder.start)

转载 作者:IT王子 更新时间:2023-10-29 00:55:42 25 4
gpt4 key购买 nike

我需要在低优先级下启动一个 CPU 密集型系统进程,这样它就不会降低我的服务器速度。我如何在 Linux 上执行此操作?

这类似于这个问题:Start a Java process at low priority using Runtime.exec / ProcessBuilder.start?除了在 Linux 而不是 Windows 上。如果在进程启动后更改进程的优先级是可以的(只要没有太多延迟)。

最佳答案

使用 /usr/bin/nice 运行命令.例如:

$ /usr/bin/nice -n 10 somecommand arg1 arg2

将以 +10 的良好度运行 somecommand arg1 arg2。 (在 Unix/Linux 中,较大的 niceness 值会导致较低的调度程序优先级。nice 的范围通常是从 -19 到 +19。)

请注意,此解决方案是特定于平台的。它只会在 Linux 和 Unix 系统上工作...


跟进

ProcessBuilder 应该像任何普通命令一样被实例化;即

    new ProcessBuilder("nice", "-n", "10", "somecommand", "arg1", "arg2");

关于何时/如何拆分命令/参数没有黑魔法。命令(例如 nice)语法决定了它的参数应该是什么,这决定了它们应该如何在 shell 命令行上引用,以及在使用 ProcessBuilder 时应该如何提供它们>(或相关的 native exec* 系统调用)。

我不认为 waitFor() 等应该有问题,因为(据我所知)/usr/bin/nice 命令使用 exec (不是 fork/exec)来运行提供的命令。试一试...

关于java - 以低优先级启动进程(使用 Runtime.exec/ProcessBuilder.start),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9053600/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com