我正在群集服务器上提交一个R作业,该作业似乎可以正常运行,只要将结果保存在脚本文件所在的相同工作目录中即可。实际上,我想将R的结果(通过saveRDS()
)保存到另一个目录(例如/var/tmp/results
)中,但是我认为Slurm正在将我的bash脚本输出重定向到其工作目录,从而导致No such file or directory
R错误。
我环顾四周,但无法找到一种方法为作业结果输出指定其他路径。也许由于我的语言限制,我使用了错误的按键,因为我不是母语为英语的人,因此在道歉之前,我很抱歉。
我将在下面添加我正在调用的脚本,即my_script.sh
#!/bin/bash
#SBATCH --ntasks=1
#SBATCH --array=1-2
#SBATCH --mem-per-cpu=15000
#SBATCH -e hostname_%j.err
#SBATCH -o hostname_%j.out
module load R
FILES=($HOME/simulation_study_bnp/models/*.R)
FILE=${FILES[$SLURM_TASK_ARRAY_ID]}
echo ${FILE}
srun Rscript runmodel.R ${FILES[$SLURM_ARRAY_TASK_ID]}
R脚本runmodel
为models
文件夹中的每个文件提供代码,加载一些数据并进行一些分析。所有必需的文件都位于$HOME/simulation_study_bnp/models/
中,其中$HOME
是我在服务器上的主目录(例如/ users / my_dir)。
R脚本runmodel.R
应保存部分结果,但应保存在其他路径中,例如/var/tmp/results/
之外的$HOME
。当我运行类似Rscript runmodel.R models/filename.R
的东西时,一切正常。经过一番试验,我的意见是
my_script.sh
通过sbatch
的过程在我的/var/tmp/results/
下寻找$HOME
,而不是考虑绝对路径,但是我不知道如何解决这个问题。