将输出写入标准输出以及 GNU 并行结果

问题描述 投票:0回答:1

我正在使用 GNU 并行并行运行多个 python 脚本,每个脚本可能需要几分钟才能完成。 脚本将其进度打印到标准输出。

示例脚本.py

print('doing something...')
do_something()
print('doing another thing...')
do_another_thing()

我的并行命令仅将输出保存到结果目录树

parallel --lb --results results < parallel-commands.txt

parallel-commands.txt的内容

python3 script.py --once
python3 script.py --twice

我想在准备好时打印输出,我在网上查找并找到了并行的

--lb
选项,这对我很有帮助,但我也希望并行将输出写入文件以及标准输出,有点像
tee
做什么。有什么办法可以实现吗?

gnu-parallel
1个回答
0
投票

目前 GNU Parallel 仅支持单个输出流。换句话说,您无法在标准输出和文件中获得输出。

所以你需要像这样手动完成:

#!/bin/bash

doit() {
    echo $1 start
    sleep $1
    echo $1 end
}
export -f doit

parallel --lb 'doit {} | tee {#}.out' ::: 3 2 1

但是,这是一项正在考虑中的功能,因此很高兴知道至少会有 1 个用户使用它:)

© www.soinside.com 2019 - 2024. All rights reserved.