weixin_58949904 2023-09-12 18:01 采纳率: 66.7%
浏览 2
已结题

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确实启动起来的,请问怎么处理这个卡死的问题?

  • 写回答

1条回答 默认 最新

  • AllenGd 大数据领域优质创作者 2023-09-12 18:33
    关注

    改进一下

    #!/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节点,可以提高脚本的执行效率。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 9月21日
  • 已采纳回答 9月13日
  • 修改了问题 9月12日
  • 修改了问题 9月12日
  • 展开全部