我想在这个命令中使用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分钟之后该过程仍在运行。我需要6个进程一次运行最多10分钟。
任何帮助都会很棒。感谢。
编辑: 为什么人们觉得需要编辑小的更改帖子,例如' 600秒'到' 600秒'?停止为业力而做..
答案 0 :(得分:5)
GNU Parallel 的超时以秒为单位,而不是毫秒。您可以使用此片段进行测试,该片段等待15秒,但超时会在10秒后将其关闭:
time parallel --timeout 10 sleep {} ::: 15
real 0m10.961s
user 0m0.071s
sys 0m0.038s