python qsub是啥意思_linux – 如何在qsub命令中使用管道或重定向?

我想在网格上使用需要使用管道(|)或重定向(>)的qsub(SGE 8.1.3,CentOS 5.9)运行一些命令.例如,假设我必须并行化命令

echo 'hello world' > hello.txt

(显然是一个简化的例子:实际上我可能需要将像bowtie这样的程序的输出直接重定向到samtools).如果我做了:

qsub echo 'hello world' > hello.txt

得到的hello.txt内容看起来像

Your job 123454321 ("echo") has been submitted

类似地,如果我使用了一个管道(echo“hello world”| myprogram),那条消息就会被传递给myprogram,而不是实际的stdout.

我知道我可以编写一个小的bash脚本,每个脚本包含带有管道/重定向的命令,然后执行qsub ./myscript.sh.但是,我正在尝试使用脚本同时运行许多并行化作业,因此我必须编写许多这样的bash脚本,每个脚本的命令略有不同.编写脚本时,此解决方案可能会开始变得非常hackish. Python中这样一个脚本的一个例子:

for i, (infile1, infile2, outfile) in enumerate(files):

command = ("bowtie -S %s %s | " +

"samtools view -bS - > %s\n") % (infile1, infile2, outfile)

script = "job" + str(counter) + ".sh"

open(script, "w").write(command)

os.system("chmod 755 %s" % script)

os.system("qsub -cwd ./%s" % script)

这有点令人沮丧,其中有一些原因,其中我的程序甚至无法删除之后的许多jobXX.sh脚本以便自行清理,因为我不知道作业在队列中等待多长时间,以及作业开始时脚本必须在那里.

有没有办法提供我的完整回声’你好世界’> hello.txt命令到qsub而不必创建包含命令的另一个文件?

解决方法:

您可以通过将其转换为bash -c命令来执行此操作,该命令允许您放置|在引用的声明中:

qsub bash -c "cmd | cmd2 "

正如@spuder在评论中指出的那样,似乎在其他版本的qsub(不是我正在使用的SGE 8.1.3)中,人们可以用以下方法解决问题:

echo "cmd | cmd2 " | qsub

同样.

标签:qsub,grid-computing,linux,pipe,sungridengine

来源: https://codeday.me/bug/20190725/1533412.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值