r - 使用 SLURM 在集群上运行作业时如何保存输出
问题描述
我想使用 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
的情况下运行脚本时,它运行良好并根据设置的路径保存了输出。
解决方案
Slurm 会将作业工作目录设置sbatch
为发出命令时的工作目录。
假设/home
目录安装在所有计算节点上,您可以cd
在提交脚本或setwd()
R 语法中显式更改工作目录。但这不应该是必要的。
三种可能:
- 由于配置或硬件问题,工作根本没有开始;您可以通过查看该列的
sacct
命令找到。state
- 该文件确实已创建,但在未共享的文件系统上的计算节点上;在这种情况下,最好的选择是通过 SSH 连接到计算节点(您可以使用 找到
sacct
)并在那里查找文件;或者 - 脚本崩溃并且根本没有创建文件,在这种情况下,您应该查看作业的输出文件 (
.out/abc.out
)。请注意,该.out
目录必须在作业开始之前存在,并且由于它以 开头.
,因此它将是一个隐藏文件,ls
仅通过-a
参数显示。
推荐阅读
- r - R - dplyr 中字符串的列
- javascript - 如果用户输入错误的单词,我如何隐藏搜索结果?
- python - 'NoneType' 'NoneType' 对象不可迭代
- django - cpanel上的django返回404上传文件
- javascript - 用于 HTML5 音频的原生 Chrome 和 Windows 10 音频控制器
- java - 如何在 Java Selenium 中使用 URL + 变量访问多个选项卡?
- node.js - express-session 和 passport-local 策略是如何工作的,它的执行流程是什么?
- python - 步行循环不在 Pygame 中循环,“+=”只执行一次
- reactjs - 反应组件不反映道具
- php - PHP - 阻止客户端使用 cURL 向我的网站发送 POST 请求