【问题标题】:for loop of subjobs using qsub R使用 qsub R 循环子作业
【发布时间】:2014-08-12 08:12:32
【问题描述】:

我正在尝试使用R --vanilla 运行子作业(每个染色体一个)。由于每个染色体都是独立的,我希望它们在系统中并行运行。我编写了以下脚本:

#!/bin/bash
for K in {20..21};
do 
qsub -V -cwd -b y -q short.q  R --vanilla --args arg1$K arg2$K arg3$K < RareMETALS.R > loggroup$K.txt; done

但不知何故,R 以交互方式打开,而不是假设在命令行中打开......当尝试脚本本身时

R --vanilla --args arg1 arg2 arg3 < RareMETALS.R > loggroup.txt; done

它可以完美地调用脚本。

谁能指导我,或者指出可能是什么问题。

【问题讨论】:

  • 你需要运行Rscript而不是R
  • 这是 Sun Grid Engine 的 qsub 吗?也许您应该编写一个命令文件,通过它将参数传递给 R,然后放弃 -b y 选项。

标签: r qsub


【解决方案1】:

我对此的看法是使用echo 而不是--args 选项将参数传递给脚本。我发现将脚本和 Grid Engine 代码分开更直接:

for K in {20..21};
do 
    echo "Rscript RareMETALS.R arg1$K arg2$K arg3$K > loggroup$K.txt" | qsub -V -cwd -q short.q
done

正如其他人评论的那样,使用Rscript

代码对我来说似乎更干净,但使用 echo 可能有一些限制,而不是 --args 我不知道。

【讨论】:

  • 1.为什么echo 而不是--args? 2. 您可以使用cmd &lt;&lt;&lt; …(或&lt;&lt;&lt; … cmd,如果您愿意的话)代替echo … | cmd
  • 1.惯性。这就是我学到的,我还不需要任何其他东西。但--args 始终是一个选项。 2. 再次,惯性。这里的字符串 (tldp.org/LDP/abs/html/x17837.html) 非常酷,虽然比 echo, IMO 更先进。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多