gpt4 book ai didi

bash - Gnu 并行组合来自标准输入和文件的参数

转载 作者:IT王子 更新时间:2023-10-29 06:01:46 25 4
gpt4 key购买 nike

我正在使用 gnu parallel 命令来监控几个 redis 端点,而不是在新端点上执行所有命令。当前命令看起来像:

parallel --ungroup redis-cli -h {} monitor :::: old-server-list | cut -d  "]" -f 2 | parallel --ungroup -k ./writter.sh {}

和 writter.sh

parallel redis-cli -h {} $1 ::: redis-host-1 redis-host-2 

但我发现在旧端点和新端点上执行命令所需的时间不一致,导致与新 Redis 的连接一直在关闭和打开。是否可以同时从标准输入和文件向并行命令传递参数?将“new-server-list”中的每条记录与相同的标准输入结合起来以避免调用脚本?

类似于:

parallel ... | cut ... | parallel redis-cli -h {<line from new-server-list>} {<stdin from pipe>}

应该执行为:

redis-cli -h redis-host-1 stdin_output1
redis-cli -h redis-host-2 stdin_output1
redis-cli -h redis-host-1 stdin_output2
redis-cli -h redis-host-2 stdin_output2

最佳答案

您可以使用 paste 并排粘贴两列,一列来自文件,一列来自命令:

所以,看看这个:

seq 10
1
2
3
4
5
6
7
8
9
10

还有一个名为 list.txt 的文件以另一种方式运行:

10
9
8
7
6
5
4
3
2
1

现在 paste 这样做:

paste list.txt <(seq 10)
10 1
9 2
8 3
7 4
6 5
5 6
4 7
3 8
2 9
1 10

您可以将其输入 GNU Parallel:

paste list.txt <(seq 10) | parallel -k --colsep '\t' echo {2} {1}
1 10
2 9
3 8
4 7
5 6
6 5
7 4
8 3
9 2
10 1

关于bash - Gnu 并行组合来自标准输入和文件的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52495082/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com