4

我有一个接受单个参数的程序。我正在使用 gnu 并行对此参数执行参数扫描。每次运行都会生成一个结果,我想将所有结果附加到一个文件中,比如 Results.txt。

这样做的正确方法是什么?

我不应该让每个实例都打开文件并写入文件,因为这可能会产生冲突并且还会打乱结果的顺序。我能想到的唯一方法是让每次运行在具有唯一名称的文件中生成其输出,然后,当 gnu 并行完成运行时,使用脚本将结果合并到单个文件中。

  1. 有没有更简单的方法来实现这一点?
  2. 当多个实例写入/读取同一个文件时会发生什么?gnu 是否并行创建多个副本,每个实例一个,就像它为 stdout 和 stderror 所做的那样?

谢谢

4

1 回答 1

11

如果您的命令将结果发送到标准输出(标准输出),则解决方案很简单:

seq 1000 | parallel echo > Results.txt

GNU Parallel 保证输出不会混合。

于 2013-11-13T12:14:40.767 回答