将SLURM批处理命令行参数传递给R
问题描述:
我试图运行带有各种参数的SLURM sbatch命令,这些参数可以在R脚本中读取。当使用PBS系统时,我曾经写过qsub -v param1=x,param2=y
(+其他系统参数,如内存要求等,以及由PBS读取的脚本名称),然后在R脚本中用x = Sys.getenv(‘param1’)
读取它。将SLURM批处理命令行参数传递给R
现在我试图
sbatch run.sh --export=basePath=‘a’
随着run.sh:
#!/bin/bash
cd $SLURM_SUBMIT_DIR
echo $PWD
module load R/common/3.3.3
R CMD BATCH --quiet --no-restore --no-save runDo.R output.txt
而且runDo.R:
base.path = Sys.getenv('basePath')
print(base.path)
脚本正在运行,但参数值不分配给base.path变量(它打印一个空字符串)。
答
export参数必须传递给sbatch而不是run.sh脚本。
它应该是这样的:
sbatch --export=basePath=‘a’ run.sh
我只知道关于R所以请原谅我,如果它是不相关的,但如果你得到脚本的输出,你可以试试'cat'而不是' print'作为'print'的输出将以'“[1]”开始,并且将在路径中保留转义字符('“\\”'为'“\”')。 –