kafka集群启动的shell脚本失效

一、问题描述

执行编写的kafka集群启动脚本时,发现kafka集群服务器并没有启动起来,并且还没有报错日志
脚本如下:

#! /bin/bash
case $1 in
"start"){
    for i in bigdata111 bigdata112 bigdata113
    do
        echo " --------启动 $i Kafka-------"
        ssh $i "/opt/module/kafka/bin/kafka-server-start.sh -daemon /opt/module/kafka/config/server.properties"
    done
};;
"stop"){
    for i in bigdata111 bigdata112 bigdata113
    do
        echo " --------停止 $i Kafka-------"
        ssh $i "/opt/module/kafka/bin/kafka-server-stop.sh stop"
    done
};;
esac

问题原因:

登录式Shell,采用用户名比如xxx登录,会自动加载/etc/profile

非登录式Shell,采用ssh比如ssh 192.168.1.121登录,不会自动加载/etc/profile,会自动加载~/.bashrc

二、解决方法

1、先测试 ssh [bigdata111 ip] “which java” 是否有反应,如果显示"no found",则需要配置

[root@bigdata111 bin]# ssh bigdata112 "which java"
which: no java in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin)

2、配置 ~/.bashrc文件

[root@bigdata111 bin]# vim ~/.bashrc 

在里面添加下面的配置

export JAVA_HOME=/opt/module/jdk1.8.0_212
export PATH=$PATH:$JAVA_HOME/bin

并将.bashrc文件分发到其他节点上

[root@bigdata111 bin]#scp ~/.bashrc root@bigdata112:/root/.bashrc

[root@bigdata111 bin]#scp ~/.bashrc root@bigdata113:/root/.bashrc

3、继续测试 ssh [bigdata111 ip] “which java” 成功后重启脚本,看进程是否存在

[root@bigdata111 bin]# ssh bigdata111 "which java"
/opt/module/jdk1.8.0_212/bin/java

kafka集群启动的shell脚本失效_第1张图片
此时,kafka集群已经可以通过shell脚本正常启动了

你可能感兴趣的:(大数据hadoop生态组件,kafka,linux,分布式)