我正在尝试在 SGE 集群上并行运行 3 个命令,例如
cmds=("prog 1 2 3" "prog 4 5 6" "prog 7 8 9")
for cmd in "${cmds[@]}"
do
sem -j 3 $cmd
done
sem --wait
因此,我的命令执行并成功完成,这是我从生成的输出日志中推断出来的,而且我可以看到它们不再在节点上运行。但是当我用 qsub 提交时 sem --wait 会无限期地等待。或者,我以交互模式运行并且a.手动键入命令和 b.获取 shell 脚本;这两种方法都成功完成。关于运行 sem,我有什么遗漏的吗?
谢谢你的帮助。
答案1
您按顺序运行每个命令。当脚本到达 时sem --wait
,所有三个命令都已运行并完成。
尝试&
在该sem -j 3 $cmd
行中添加一个。这将在后台并行运行每个命令。
cmds=("prog 1 2 3" "prog 4 5 6" "prog 7 8 9")
for cmd in "${cmds[@]}"
do
sem -j 3 $cmd &
done
sem --wait