是否可以为 sbatch 的默认输出文件配置目录?

kjo*_*kjo 6 slurm

是否有某种方法可以配置替代默认目录(当前目录除外)sbatch以放置未指定时生成的文件slurm-%j.out(或slurm-%A_%a.out)-o?

我的目标是有一种方便/低维护的方式来

  1. 将所有生成的默认输出文件合并sbatch到一个地方;和
  2. 避免用此类文件弄乱当前目录。

我曾希望找到类似SLURM_DEFAULT_OUTPUT_DIRECTORY环境变量的东西来解决这个问题,但如果有这样的变量,我设法错过了它。

是否有其他机制可以达到预期的结果?


(FWIW,我所追求的功能的唯一先例是 Emacs 的backup-directory-alist,它告诉 Emacs 将默认情况下放置它生成的备份文件。这个功能比我所追求的更复杂,因为它支持多个这些目录,根据原始文件名中的模式使用。)

mil*_*osh 7

将日志文件传递到 bash 脚本中的文件夹中,如下所示:

#SBATCH -o ./Report/output.%a.out # STDOUT
Run Code Online (Sandbox Code Playgroud)

这会将输出文件放在批处理脚本旁边的“报告”文件夹中。


Mat*_*ato 7

下面的.sh文件将 slurm 输出 .out 文件保存在

“ /home/YOUR_USER/lustre/PROJECT/output/%j.out ”

其中 %j 是正在运行的作业的 jobid,如此处所述。

因此,在上面提到的输出目录中,您会发现类似的内容:

399937.out

#!/bin/bash
#SBATCH --job-name=JOB_ID_NAME
#SBATCH --time=4-00:00          # adjust this to match the walltime of your job
#SBATCH --cpus-per-task=28      # adjust this if you are using parallel commands
#SBATCH --mem=1000              # adjust this according to the memory requirement per node you need
#SBATCH --mail-user=YOUR-EMAIL  # adjust this to match your email address
#SBATCH --mail-type=ALL
#SBATCH --output=/home/YOUR_USER/lustre/PROJECT/output/%j.out
Run Code Online (Sandbox Code Playgroud)


小智 0

我遇到了同样的问题,我的解决方案是将提交脚本复制到指定用于输出的目录中。然后我运行位于输出目录中的脚本。打算使用 SLURM 提交的代码目录可以通过环境变量动态地传递到作业脚本。也可以在执行代码之前将代码目录设置为工作目录。我希望有人觉得这个解决方案有帮助。