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