在一台机器上控制另一台机器启动zookeeper:
ssh mini2 /root/apps/zookeeper-3.4.5/bin/zkServer.sh start
运行该命令后,在mini2上并没有启动zookeeper
原因: ssh命令开启了一个新的会话(新的bash),在该会话中没有JAVA_HOME变量
解决方案:
ssh mini2 "source /etc/profile;/root/apps/zookeeper/bin/zkServer.sh start"
source /etc/profile 命令表示把定义在/etc/profile文件中的变量添加到当前bash中,这样新的会话中就有了JAVA_HOME变量
export变量作用域:若定义变量时在前面加上export,表示该变量在当前shell进程和子进程中都有;若不加export,则表示该变量只对自己所在的shell进程生效。
source:把定义在脚本中的变量添加到当前进程(bash)中。
zookeeper集群的自动启动脚本:
#!/bin/sh
echo "start zkServer..."
for i in 1 2 3
do
ssh mini$i "source /etc/profile;/root/apps/zookeeper-3.4.5/bin/zkServer.sh start"
done