【问题标题】:qsub inside system2 functionqsub 在 system2 函数中
【发布时间】:2016-01-26 20:54:11
【问题描述】:

我想通过 R system2() 运行 qsub 作业。 .sh 脚本本身需要一些参数,我不知道如何传递它们。 我做了以下但似乎没有发生 - 作业提交给 qsub 但它消失了,我没有从脚本的输出中得到结果。

arg1, arg2, arg3 是 script.sh 需要的命令行参数

arg1<-"first"
arg2<-"second"
arg3<-"third"

system2("qsub", stdout="log.out", stderr="log.err", 
         args="-cwd -v arg1,arg2,arg3 -o out.txt -e err.txt script.sh")

我猜变量 arg1、arg2 和 arg3 在这个字符串中是不可见的。我怎样才能以不同的方式传递它们?

【问题讨论】:

    标签: r qsub


    【解决方案1】:

    system2args 参数应该是单独参数的字符向量,而不是由空格分隔的单个字符串。因此,它应该看起来像:

    system2("qsub", stdout="log.out", stderr="log.err", 
             args=c("-cwd", "-v", "arg1,arg2,arg3", "-o",
                    "out.txt", "-e", "err.txt", "script.sh"))
    

    当给定一个字符串时,它将转义空格,这意味着 qsub(或任何命令)不会知道它们是单独的参数。

    或者,如果您希望将参数写为单个空格分隔的字符串,您可以使用 strsplit 将其拆分:

    system2("qsub", stdout="log.out", stderr="log.err", 
             args=strsplit("-cwd -v arg1,arg2,arg3 -o out.txt -e err.txt script.sh", " ")[[1]])
    

    【讨论】:

    • 我按照你的建议做了,但我仍然一无所获。连 out.txt 和 err.txt 都没有创建。
    • @AirelleJab log.outlog.err 有什么东西吗?另外,以防万一-cwd 不起作用,请检查您的主目录中是否有这些文件
    • 在 log.out 中显示作业已提交“您的作业 11 ("script.sh") 已提交”。 Log.err 是空的,我检查了我的 /home 但那里没有新内容。
    • 如果您直接在同一个目录中执行qsub -cwd -v arg1,arg2,arg3 -o out.txt -e err.txt script.sh 会发生什么?
    • 它正在工作 - 它已添加到队列中。我在 Shiny 服务器中使用它,当用户按下按钮时会触发此脚本,但如果没有 qsub(仅运行脚本,在 system2 中运行),它甚至可以在服务器内部工作。编辑:但在这种情况下,也不会创建 out 和 err
    猜你喜欢
    • 2014-12-20
    • 2017-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-17
    • 1970-01-01
    相关资源
    最近更新 更多