【问题标题】:Is it safe to pipe output of gnu parallel to a single file or pipe将 gnu 的输出并行传输到单个文件或管道是否安全
【发布时间】:2018-05-15 12:33:21
【问题描述】:

结构类似于

find . -type f -name '*log' \
| parallel grep 'somestuff'    
| moreComplexLineRearrangementScript
| sort

我想知道 moreComplexLineRearrangementScript 是否有看到乱码的风险,因为多个 grep 实例写入同一个管道而没有任何缓冲区同步。

  1. 这对于上述 grep 的幼稚使用可能是一个问题,还是我可以依赖 grep 的实现总是使用 flush() 写入行的事实?
  2. 如果不是 grep,parallel 中是否有一些魔法可以执行 flush()?
  3. 有没有办法使用parallel 来保证行保持完整——除了将每个并行进程的输出重定向到一个单独的文件然后从那里开始?

【问题讨论】:

    标签: parallel-processing scripting io-redirection


    【解决方案1】:

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

    parallel --group
    

    如果您希望 GNU Parallel 进行一次一行的输出,可能混合来自不同作业的输出,但总是在整行中,请使用:

    parallel --line-buffer
    

    如果你喜欢你的输出非常高,甚至是中线,使用:

    parallel --ungroup
    

    【讨论】:

      猜你喜欢
      • 2011-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-19
      • 1970-01-01
      • 2019-01-24
      • 1970-01-01
      相关资源
      最近更新 更多