SLURM - 回显输出文件以便在屏幕上打印?

Posted

技术标签:

【中文标题】SLURM - 回显输出文件以便在屏幕上打印?【英文标题】:SLURM - echo output file so it prints on screen? 【发布时间】:2017-09-09 21:38:52 【问题描述】:

我们公司的服务器使用 SLURM 工作负载管理器。我正在使用sbatch 提交脚本。目前,我使用#SBATCH -o /job_%j.out#SBATCH -e /job_%j.err 将输出打印到文件中。除了打印到文件之外,我还希望在屏幕上打印 -e 文件。我希望能够实时跟踪进度,而不必经常打开和刷新.out.errfiles。

我尝试过echo,但这只会导致将信息打印到-o 文件中。我还尝试不指定要打印到的输出位置(即:没有#SBATCH -o 命令),希望它会默认打印到屏幕上。那也没用。

我觉得有一个简单的解决方法,但我显然没有在谷歌上搜索正确的条款。感谢您的帮助!

【问题讨论】:

【参考方案1】:

sbatch 将提交批处理作业,该作业在另一台计算机上运行,​​而不是您打开终端的计算机。因此sbatch 将stdout 和stderr 重定向到一个文件。最简单的选择是使用tail -f 动态查看文件内容。

否则,使用srun 而不是sbatch 将输出直接重定向到终端上,但是它不再批量运行,如果您失去连接或关闭笔记本电脑,您的工作将被终止或关闭终端窗口。

【讨论】:

应该tail -f 显示print 语句吗? tail -f 将显示写入文件的任何内容。但请注意,这里和那里可能存在缓冲区(语言运行时缓冲区、操作系统缓冲区、文件系统缓冲区等),这可能会延迟一些事情甚至很多)【参考方案2】:

如果您的 sbatch 文件包含 srun 命令,您可以使用 sattach jobid.stepid 查看输出 - 您可以指定一个选项来查看错误而不是输出。

【讨论】:

即使 id 与 squeue 的输出相同,我也会收到“指定的作业 id 无效”错误,有什么提示吗? 刚刚注意到,sattach 仅适用于 srun 命令吗?好像是这样,我是用 sbatch 来用的。

以上是关于SLURM - 回显输出文件以便在屏幕上打印?的主要内容,如果未能解决你的问题,请参考以下文章

Gnuplot 输出设置为“在屏幕上”显示如何更改程序,以便将绘图输出定向到我在下面提供程序的文件夹

获取Symfony命令的输出并将其保存到文件中

python 让Log既打印在屏幕上,又在文件里保存一份

如何在 systemd 启动期间最后运行并打印我的脚本输出?

C语言编程 编写程序,在屏幕上输出下面的图案(要求用for 循环实现)。 * * *

不经过print()打印输出的单一表达式,是不是会显示输出到屏幕上