代码之家  ›  专栏  ›  技术社区  ›  phdstudent

将批处理作业提交到使用linux但不使用slum的服务器?

  •  0
  • phdstudent  · 技术社区  · 1 年前

    我曾经有权访问slum服务器,在那里我将提交以下批处理作业:

    #!/bin/bash
    #SBATCH --job-name=sdmodel
    #SBATCH --output=logs/out/%a
    #SBATCH --error=logs/err/%a
    #SBATCH --nodes=1
    #SBATCH --partition=common,scavenger
    #SBATCH -c 10
    #SBATCH --mem-per-cpu=12GB
    #SBATCH --array=1-236
    
    module load Matlab/R2021a
    matlab -nodisplay -r "run('main.m'); exit"
    

    现在,新的服务器只是linux(没有slum)。所以sbatch命令不起作用。有没有类似的操作?

    0 回复  |  直到 1 年前
        1
  •  1
  •   Dan Bonachea    1 年前

    如果“新服务器”是您要使用的集群的前端,该集群运行不同的批处理调度系统(有几种SLURM的替代方案),那么您需要查阅文档或系统管理员来识别新的批处理计划系统,然后阅读其文档。

    如果新服务器只是一个交互式时间共享的Linux服务器(而不是一个批量调度的集群),那么您可能可以直接从命令行执行未经修改的相同脚本。的好处之一 #SBATCH 指令格式是它们只是对的注释 bash 并且当shell交互执行脚本时将被忽略。

    如果你的问题是 事实上 询问如何在后台运行脚本并将输出捕获到文件中(以类似于在SLURM下执行脚本的方式),您可以尝试以下命令(假设上面的脚本名为 myscript.sh ):

    $ mkdir -p logs/{out,err}  
    $ id=`date +%Y-%m-%d_%H:%M:%S` ; echo "Running $id" ; nohup myscript.sh >logs/out/$id 2>logs/err/$id &