Linux执行shell脚本中的ssh命令时没有反应

今天在编写shell脚本进行远程启动集群时没反应,查略了网上的资料后找到了适合我问题的答案

  • 只需要在执性启动命令前,更新下配置文件就解决了(加上:source /etc/profile)
for i in hadoop101 hadoop102 hadoop103
    do
        echo " --------启动 $i Kafka-------"
        ssh $i "source /etc/profile; /opt/module/servers/kafka/bin/kafka-server-start.sh -daemon /opt/module/servers/kafka/config/server.properties "

成功启动:

具体原因还未知,希望有大佬能解答下

[2023/02/15]:这是因为Linux登录Shell和非登录Shell加载文件的原因。本人在/etc/profile/目录下配置环境变量,正常通过用户名、密码的方式登录Linux系统时,会自动加载/etc/prifile~/.bash_profile~/.bashrc目录下的文件,但是非登录shell只会加载~/.bashrc文件,所以通过shell远程执行某些用到环境变量的命令时会显示找不到东西或者没反应。
另外~/.bashrc文件会自动遍历/etc/profile.d/*.sh目录下的所有.sh文件,我们只要在该目录下自定义环境变量,就不会出现集群或者是命令执行不成功的问题了

posted @ 2022-12-23 16:22  MrSponge  Views(1388)  Comments(0Edit  收藏  举报