介绍
我使用一台计算机集群,通过.pbs文件提交( qsub
)作业。 缺省值是在执行qsub
命令的工作目录中的文件上打印标准输出和标准错误。
问题
对我来说,问题是标准输出和标准错误文件只出现在stream程结束时,而我希望能够直接监控stream程的进展。
思考
我知道以下选项存在
#PBS -o #PBS -e #PBS -j [oe/eo]
以表示标准输出和标准错误的特定文件名称和位置。 不过,有两点我不清楚
我不太清楚在使用数组时它是如何工作的(通过#PBS -t
)。 一个PBS_ARRAYID
标准输出会覆盖以前的标准输出吗? 是否将整个数组的所有标准输出打印在同一个文件中,或者有没有办法在文件名中包含PBS_ARRAYID
?
在这个过程结束之前,使用这些选项是否可以帮助我以任何方式访问标准输出?
题
在计算机群集上提交过程时,如何在过程结束之前将标准输出和标准错误可视化?
根据此文档 ,数组作业中的每个任务都会获取环境变量PBS_ARRAYID
集,因此可以将其包含在您的设置中:
#PBS -o /path/for/$PBS_JOBNAME.$PBS_ARRAYID
我不知道为什么你的引擎会扣留输出文件,直到作业完成。 (我的网格引擎不这样做。)也许它将它们写入临时位置或临时名称,然后在作业完成后移动它们?
在我使用的计算机集群中,至少将标准输出保存在仅在进程结束时保存到#PBS -o
的RAM中。 一种解决方法是显式重定向shell脚本中的标准输出。 做类似的事情:
executable arguments >& StandardOutputs_${PBS_JOBNAME}.txt