进程的 GNU 并行超时

GNU Parallel timeout for process

我想为此命令使用 GNU Parallel:

seq -w 30 | parallel -k -j6 java -javaagent:build/libs/pddl4j-3.1.0.jar -server -Xms8048m -Xmx8048m fr.uga.pddl4j.planners.hsp.HSP -o pddl/benchmarks_STRIPS/benchmarks_STRIPS/ipc1/movie/domain.pddl -f pddl/benchmarks_STRIPS/benchmarks_STRIPS/ipc1/movie/p{}.pddl -i 8 '>>' AstarMovie.txt

我在 java 程序中有 600 秒的超时,但并行不执行它。进程可以 运行 持续 2、3、4 或更长时间并且永不停止。

我根据网上的GNU教程尝试了这个命令,但它也不起作用:

seq -w 30 | parallel -k --timeout 600000 -j6 java -javaagent:build/libs/pddl4j-3.1.0.jar -server -Xms2048m -Xmx2048m fr.uga.pddl4j.planners.hsp.HSP -o pddl/benchmarks_STRIPS/benchmarks_STRIPS/ipc1/movie/domain.pddl -f pddl/benchmarks_STRIPS/benchmarks_STRIPS/ipc1/movie/p{}.pddl -i 8 '>>' AstarMovie.txt

我在教程中看到 GNU Parallel 使用毫秒 - 所以 600000 是 10 分钟,这是我需要的,但 12 分钟后该过程仍然 运行ning。我需要 6 个进程一次 运行,每个进程最多 10 分钟。

任何帮助都会很棒。谢谢

编辑: 为什么人们觉得有必要为“600 秒”到“600 秒”这样的小变化编辑帖子?停止为因果报应..

GNU Parallel 的超时以秒为单位,而不是毫秒。您可以使用此代码段对其进行测试,该代码段等待 15 秒,但超时会在 10 秒后将其切断:

time parallel --timeout 10 sleep {} ::: 15

real    0m10.961s
user    0m0.071s
sys     0m0.038s