我的问题是:我有一个bash脚本执行某些操作,然后像这样调用800个bsub作业:
pids=
rm -f ~/.count-*
for i in `ls _some_files_`; do
of=~/.count-${i}
bsub -I "grep _something_ $i > $of" &
pids="${!} ${pids}"
done
wait ${pids}
然后脚本处理输出文件$ of并回显结果。
麻烦的是,我有很多行:
Job <7536> is submitted to default queue <interactive>.
<<Waiting for dispatch ...>>
<<Starting on hostA>>
它实际上是上述3行的800倍。有没有办法抑制这条LSF线?
我在上面的循环中尝试过:
bsub -I "grep _something_ $i > $of" &> /dev/null
我确实删除了LSF的详细程度,但不是一次提交几乎所有800个作业,然后运行不到4分钟,它一次只提交几个作业,我必须等待一个多小时才能使脚本运行光洁度。
AFAIK lsf bsub似乎没有选择来压制所有这些冗长。我能在这做什么?
答案 0 :(得分:1)
您可以通过在bsub之前将环境变量BSUB_QUIET设置为任何值(包括空值)来抑制此输出。所以,在循环之前说你可以添加:
export BSUB_QUIET=
然后,如果您想将其恢复正常,可以使用以下命令清除变量:
unset BSUB_QUIET
希望能帮到你。
答案 1 :(得分:0)
您是否考虑过使用作业依赖项并对日志文件进行后处理?
1)运行每个“子”作业(删除“-Is”)并将IO输出到单独的输出文件。应该使用作业名提交每个作业(请参阅-J)。 jobname可以形成一个数组。
2)你的最后一份工作将取决于孩子的完成(见-w)。
除了在集群中运行并发之外,这种方法的另一个优点是您的整个过程不会受到IO问题的影响。