我已经使用GNU Parallel在bash中并行化了for循环。
这是一个非常简单的示例,显示了我想要达到的目标:

seq 10 | parallel -n0 echo "Hello World" &

我想从终端分离所有运行,除了最后一个运行,因此仅在最后一个循环中删除&。
有没有办法做到这一点?

编辑:
由于我不太清楚,因此我将尝试以更好的方式说明自己:

我先启动了一个模拟器,然后使用GNU并行程序启动了多次与该模拟器连接的相同脚本。我希望它们都与终端分离,最后一个除外,以避免与输出重叠产生混淆。

最佳答案

没有选择,但是默认是第一个作业将/dev/tty作为输入。因此,也许您可​​以先完成上一份工作?

如果您只需要输出而不是输入,则应该可以:

seq 10 | parallel echo Hello World '> {= $_= $job->seq() == total_jobs() ? "/dev/tty" : "/dev/null" =}'

(需要版本20160122或更高版本)

否则,解决方法是保存到文件并输出最后一个文件:
seq 10 | parallel --files -n0 echo Hello World | tail -n1 | parallel -u cat

关于linux - 上次使用其他选项运行GNU Parallel,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35268370/

10-13 08:44