我有一个远程控制服务器,我用它来自动对我的所有节点连续执行命令/脚本等。为了提高性能和速度,我想并行运行它。我正在大约 180 个节点中执行命令。在系列中,我需要大约 2 个小时才能完成所有这些操作。所以我现在正在寻找速度。伪代码如下所示,我使用 based64 将命令发送到其他节点。我可以使用它执行任意复杂的命令。
for host in ${sshconfig[@]}; do
ssh "$host" "echo $COMMAND | base64 -d | bash" &
done
但是我犯了一个错误,忘记了有很多节点,所以我的bash脚本为每个节点创建了很多进程,结果控制服务器的系统崩溃了,它已经关闭了。现在我无法再连接到它了。
我想知道,如何在 bash 脚本中分配内存?的易用性ssh
使 bash 非常适合我的情况,但我想知道如何通过并行执行它们来提高性能,并且仍然不用担心系统崩溃等。
要限制并行 SSH 连接的数量,您可以这样使用
xargs
:这将在最多四个并行实例中运行您的命令(由 给出
-P 4
)。该-I {}
选项会将命令中的字符串xargs
替换为从其标准输入中读取的字符串。{}
标准输入连接到它,它只打印当时列表中的printf
一项。sshconfig
您将使用各种
-P
设置测试运行它,直到您找到一个似乎运行良好的数字。如果您在远程机器上的登录 shell 是
bash
,您也可以考虑