我已经使用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/