我正在处理一个文本文件,其中包含由 xargs 生成的多个并行进程。我还需要将每个进程的标准输出捕获到单独的日志文件中。下面是一个示例,其中每个进程的输出被交错到一个文件中——这不是我想要的。
理想情况下,每个日志文件应按文件行号进行编号,即 logfile-1、logfile-2 等。
cat inputfile.txt | xargs -n 1 -P 8 ./myScript.sh | tee logfile
如果可能的话,最好避免使用外部包装器脚本,但如果有一种方法可以用此处文档包装 myScript,那就行了。
尝试这个:
nl inputfile.txt | xargs -n 2 -P 8 sh -c './myScript.sh "$1" > logfile-$0'
这假设每个参数inputfile.txt
独占一行且不包含空格。这nl
命令对每一行进行编号,将每个参数与唯一的编号配对。这xargs
命令一次接受两个参数,第一个是行号,第二个是来自的相应行inputfile.txt
,并将它们传递给sh
. The sh
命令使用参数来生成输出文件名和参数myScript.sh
分别。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)