shell脚本启动集群ES异常

写了一个shell脚本,启动集群内ES的,已经互相做了免密登录

#! /bin/bash
case $1 in
"start"){
for i in node0 node1 node2
do
echo "-----------启动 $i elasticsearch 开始-----------"
        ssh $i "cd /opt/elasticsearch/bin/;./elasticsearch -d"
echo "-----------启动 $i elasticsearch 结束-----------"
done
};;
esac

但启动脚本,都会在第一个节点node0上卡死,除非ctrl+c,才会到第二个节点继续下去,然后ctrl+c到第三个节点

img

已启动成功,但脚本运行还卡在node0节点,不能继续去node1节点中继续执行命令

img

ctrl+c后

img

虽然会卡在某一节点,但在该节点的ES确实启动起来的,请问怎么处理这个卡死的问题?

改进一下

#!/bin/bash

case $1 in
"start")
    for i in node0 node1 node2; do
        echo "-----------启动 $i elasticsearch 开始-----------"
        ssh $i "cd /opt/elasticsearch/bin/; ./elasticsearch -d" &
        echo "-----------启动 $i elasticsearch 结束-----------"
    done
    ;;
esac

1、在启动elasticsearch命令的后面添加了&符号,将该命令放入后台运行,避免等待每个节点的elasticsearch启动完成后再继续下一个节点的启动。
2、并行启动elasticsearch节点,可以提高脚本的执行效率。