如何让GNU parallel同时输出到stdout并写入文件?
实现实时输出+双写文件的两种方法
方法一:用GNU Parallel自带的--tee参数
直接在现有命令中添加--tee参数即可,它会让每个Python脚本的输出同时完成两个动作:
- 借助
--lb参数实时打印到终端 - 写入
--results指定的results目录树
命令修改后如下:
parallel --lb --tee --results results < parallel-commands.txt
这个方法无需修改任何任务命令,是最省心的解决方案。
方法二:给单个任务命令添加tee
如果需要自定义每个任务的输出文件路径或名称,而非使用Parallel自动生成的目录结构,可以修改parallel-commands.txt中的每条命令,手动加入tee:
python3 script.py --once | tee output_once.log python3 script.py --twice | tee output_twice.log
之后保留--lb参数运行Parallel即可:
parallel --lb < parallel-commands.txt
这种方式灵活性更高,但需要逐个调整任务命令。
内容的提问来源于stack exchange,提问作者jon doe
相关产品推荐
相关产品推荐

