我想使用SLURM运行R脚本。我创建了R脚本“ test.R”,如下所示:
print("Running the test script")
write.csv(head(mtcars), "mtcars_data_test.csv")
我创建了一个bash脚本来运行此R脚本“ submit.sh”
#!/bin/bash
#sbatch --job-name=test.job
#sbatch --output=.out/abc.out
Rscript /home/abc/job_sub_test/test.R
然后我在集群上提交了工作
sbatch submit.sh
我不确定我的输出保存在哪里。我查看了主目录,但没有输出文件。
修改
我还在test.R
中设置了工作目录,但没什么不同。
setwd("/home/abc")
print("Running the test script")
write.csv(head(mtcars), "mtcars_data_test.csv")
当我在没有SLURM Rscript test.R
的情况下运行脚本时,它运行良好,并根据设置的路径保存了输出。
答案 0 :(得分:1)
Slurm会将作业工作目录设置为发出sbatch
命令时的工作目录。
假设/home
目录已安装在所有计算节点上,则可以使用提交脚本中的cd
或R语法中的setwd()
显式更改工作目录。但这不是必须的。
三种可能性:
sacct
命令并查看state
列来找出答案。sacct
找到它)并在那里查找文件;或.out/abc.out
)。请注意,.out
目录必须在作业开始之前存在,并且由于它以.
开头,因此它将是一个隐藏文件,仅在ls
中显示{ 1}}参数。答案 1 :(得分:0)
sbatch的--output参数相对于您提交作业的文件夹。 R脚本中的setwd不会影响它,因为Slurm已经解析了该参数并在R脚本运行时开始将输出管道传输到文件。
首先,如果希望输出到/home/abc/.out/,请确保在提交脚本时位于主目录中,或指定--output参数的完整路径。
第二,.out文件夹必须存在;我对此进行了测试,但Slurm不会创建它。