2016-05-12 28 views
0

我正在尝试运行R脚本。如何在.sh文件中运行R作业

这些都是从我的[R脚本big2.r

dataa <- read.csv("/home/people/R2/big2.csv") 
write.csv(head(dataa), file="/home/people/R2/head.csv") 

一些行,当我在终端执行R CMD BATCH big2.r,它给了我一个.Rout与head.csv文件一起。

但是当我尝试,使用我的big2.sh文件提交作业使用qsub big2.sh队列它不给我一个.Rout文件或head.csv并为工作和qstat被C standard,然后就不见了。

这是我的sh文件

#!/bin/bash -l 

module load R/3.2.2 
R CMD BATCH big2.r 

我在做什么错误的内容?提交执行R脚本的作业的正确方法是什么?

当我尝试#!/usr/bin/r时出现以下错误。

-bash: /var/spool/torque/mom_priv/jobs/363059.sonic-head.SC: /usr/bin/r: bad interpreter: No such file or directory

我试着在Bash script: bad interpreter找到了解决办法,但没有帮助。

+1

[如何在shell脚本中运行R代码?](http://stackoverflow.com/questions/24642281/how-to-run-r-codes-inside-shell-script)可能的副本 –

+0

嗨Hack-R,the解决方案提供编辑该链接不解决我的问题:( – andy

+0

你试过了吗?正如您所描述的那样,没有什么特别的情况,您提供的示例并不遵循解决方案。根据你对你的问题所做的编辑以及相关的错误,我会说你需要验证位置并且/或者试着把路径放到Rscript的第一行,比如'#!/ usr/bin/Rscript'。 –

回答

1

好的尝试是这样的:

#!/usr/bin/bash -l 
#PBS -N qsub_R_test 

cd $PBS_O_WORKDIR 
echo We are now in working directory $PWD 
module load R/3.2.2 
R CMD BATCH big2.r 
+0

“#!/ usr/bin/bash -l”给我-bash:/var/spool/torque/mom_priv/jobs/363068.sonic-head.SC:/ usr/bin/bash:bad翻译:没有这样的文件或目录 – andy

+0

把你自己的bash路径那里 – Sudhir

+0

非常感谢Sudhir,我很惭愧地说,我还没有看到.rout文件或head.csv,因为它们是在主目录中创建的。你做的非常出色。谢谢sooo多:) – andy

-1

您可以创建类似(batchR.sh)一个shell脚本:

#!/bin/bash 
#$ -S (your parameter can go here, one line for each) 
#$ -j xyz 

module load R/3.2.2 #in case you specifically need to load R on server node 
R CMD BATCH big2.r 

提交以此为 的qsub batchR.sh

+0

嗨Sudhir,当我使用#!/ bin/bash而不是#!/ bin/bash -l时,出现以下错误:init.c(379):错误:109 :未知的shell类型'load' /var/spool/torque/mom_priv/jobs/363060.sonic-head.SC:line 4:R:command not found – andy

+0

哦,我的错误。你是否在.sh文件中提供队列的参数? qsub将读取作业提交的参数,例如内存,哪个队列等。因此,无论您需要为队列提交指定哪个参数,都将它们放在#!/ bin/bash之后的.sh文件的顶部作为注释(#$) – Sudhir

+0

Sudhir我可以问你一个不同的问题吗?如果我想从工作节点切换到高存储节点,它声明我必须提到在PBS中我知道节点名称,我想如何提及使用#PBS ?我知道#PBS -l可用于每个节点的节点和处理器数量。但是,这是节点 – andy