gpt4 book ai didi

linux - Xargs:并行运行 3 个独立的 xargs 命令

转载 作者:太空宇宙 更新时间:2023-11-04 11:15:42 26 4
gpt4 key购买 nike

我有以下 3 个命令(每个都包含 xargs 和并行进程),我想将它们一起并行运行。

1. ls filenames_for_bld*_all | xargs -i bash -c 'calculateMd5Sums "$@"' _ {}
2. cat filenames_for_bld*_all | awk -F'|' '{print $2}' | xargs -n 1 -P 10 -I {} remotecmd -q -n server1 md5sum {} 2>/dev/null| tee -a ${dir}/md5sums_for_server1
3. cat filenames_for_bld*_all | awk -F'|' '{print $2}' | xargs -n 1 -P 23 -I {} remotecmd -q -n server2 md5sum {} 2>/dev/null | tee -a ${dir}/md5sums_for_server2

每个 xargs 命令在单独的服务器上运行多个进程。因此 1 在服务器 1-5 上运行,2 在服务器 6 上运行,3 在服务器 7 上运行。

是否可以并行运行以上所有 3 个?

在上面使用 xargs 会很好。我正在考虑将上面的3设置为字符串xargsInput,用换行符分隔,然后...

echo $xargsInput | xargs -n 1 -P 3 -I {} sh -c {}

但是,这有一些错误:

ls: xargs: No such file or directory
ls: bash: No such file or directory
ls: calculateMd5Sums: No such file or directory
ls: 20140107: No such file or directory
ls: _: No such file or directory
ls: {}: No such file or directory

最佳答案

只需在每一行之后添加一个&,并可选择在末尾添加一个wait 以等待它们全部完成:

ls filenames_for_bld*_all | xargs -i bash -c 'calculateMd5Sums "$@"' _ {} &
cat filenames_for_bld*_all | awk -F'|' '{print $2}' | xargs -n 1 -P 10 -I {} remotecmd -q -n server1 md5sum {} 2>/dev/null| tee -a ${dir}/md5sums_for_server1 &
cat filenames_for_bld*_all | awk -F'|' '{print $2}' | xargs -n 1 -P 23 -I {} remotecmd -q -n server2 md5sum {} 2>/dev/null | tee -a ${dir}/md5sums_for_server2 &
wait

这适用于所有不需要交互的独立 shell 命令。

关于linux - Xargs:并行运行 3 个独立的 xargs 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21174553/

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