Parallel processing 将gnu的输出与单个文件或管道并行是否安全

Parallel processing 将gnu的输出与单个文件或管道并行是否安全,parallel-processing,scripting,io-redirection,Parallel Processing,Scripting,Io Redirection,构造类似于 find . -type f -name '*log' \ | parallel grep 'somestuff' | moreComplexLineRearrangementScript | sort 我想知道,由于多个grep实例在没有任何缓冲区同步的情况下写入同一管道,因此MoreComplexlinerRangementScript是否有看到乱码行的风险 这是像上面那样天真地使用grep的问题吗?还是grep的实现总是使用flush()写行 如果不是grep,那么在

构造类似于

find . -type f -name '*log' \
| parallel grep 'somestuff'    
| moreComplexLineRearrangementScript
| sort
我想知道,由于多个grep实例在没有任何缓冲区同步的情况下写入同一管道,因此MoreComplexlinerRangementScript是否有看到乱码行的风险

  • 这是像上面那样天真地使用grep的问题吗?还是grep的实现总是使用flush()写行
  • 如果不是grep,那么在执行flush()的
    parallel
    中会有什么魔力吗
  • 除了将每个并行进程的输出重定向到一个单独的文件,然后从那里开始,还有没有一种方法可以使用
    parallel
    来保证行保持完整

  • 默认情况下,GNU Parallel按作业缓冲输出,因此不同作业的输出不会全部混淆,即:

    parallel --group
    
    如果希望GNU Parallel一次一行地输出,可能会混合不同作业的输出,但始终是整行输出,请使用:

    parallel --line-buffer
    
    如果您喜欢您的输出非常高,甚至是中线,那么请使用:

    parallel --ungroup