我的 Bash-Foo 不够强。目前我有类似的东西
function update_project {
for i in server-{1,2,3,4} ; do
echo "Updating $i"
ssh $i "git pull"
done
}
服务器数量每天都在增长,而且每次更新大约需要 20 秒,因此我想同时执行请求。最好的方法是什么,同时仍然能够看到输出(例如失败的合并)?
答案1
你为什么要重新发明轮子?只需使用卡皮斯特拉诺部署您的项目代码。它专为此目的而设计,并在所有配置的机器上并行运行部署。
答案2
函数将允许您向任意数量的机器发送命令,并让您观察输出。
答案3
有多个并行的 ssh 项目。查找 pssh。
答案4
如果你有 GNU Parallelhttp://www.gnu.org/software/parallel/安装后你可以这样做:
parallel --slf hostfile --nonall --tag git pull
您可以通过以下方式轻松安装 GNU Parallel:
wget http://git.savannah.gnu.org/cgit/parallel.git/plain/src/parallel
chmod 755 parallel
cp parallel sem
观看 GNU Parallel 的介绍视频以了解更多信息: https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1