Bash 如何使用qsub向集群提交cat命令并正确使用管道
我想使用qsub动态地向集群提交几个“cat作业”。目前,我正在使用cat将多个文件连接到命令末尾的单个文件(使用Bash 如何使用qsub向集群提交cat命令并正确使用管道,bash,unix,cluster-computing,cat,qsub,Bash,Unix,Cluster Computing,Cat,Qsub,我想使用qsub动态地向集群提交几个“cat作业”。目前,我正在使用cat将多个文件连接到命令末尾的单个文件(使用>output\u file)。 问题是qsub将命令中的>output_文件作为qsub的一部分,将作业日志放在那里,而不是cat输出 qsub -b y -cwd -q bigmem cmd1 其中cmd1看起来像: cat file1 file2 filen > output_file 当作业通过pbs运行时,stdout被重定向到作业的输出文件,因此执行此操作的方法
>output\u file
)。
问题是qsub将命令中的>output_文件作为qsub的一部分,将作业日志放在那里,而不是cat输出
qsub -b y -cwd -q bigmem cmd1
其中cmd1
看起来像:
cat file1 file2 filen > output_file
当作业通过pbs运行时,stdout被重定向到作业的输出文件,因此执行此操作的方法是编写脚本:
#!/bin/bash
cat file1 file2 ... filen
您不需要将输出重定向到文件,因为mom守护进程将在设置作业时为您执行此操作,您只需要使用-o指定所需的输出文件。例如,如果您将上面的脚本命名为script.sh(确保它是可执行的),您将提交:
qsub script.sh-b y-q bigmem-o输出文件
如果您的代码是一次性的,则可以使用echo
:
echo "cat file1 file2 ... filen > outfile" | qsub -cwd <options>
echo“cat file1 file2…filen>outfile”| qsub-cwd
您的意思是想通过qsub将文件1和文件2作为单个作业脚本文件提交吗?不,我想使用cat连接所有文件(文件1到文件n),并将其存储在另一个文件中。我要用大文件做几百次。这就是我使用集群的原因。cat
的关键在于它连接了许多文件。将单个文件的内容打印到stdout
是cat
的常见用法。因此,您的命令应该是cat file1 file2。。。文件名
。