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文件,我们只要在该目录下自定义环境变量,就不会出现集群或者是命令执行不成功的问题了