--
Linux系统下,多台服务器安装jdk的时候,使用shell脚本去source /etc/profile,并不会立即生效,而是需要把finalshell(远程软件)连接页面关闭再打开才生效(也不需要重启服务器)。比如执行完shell脚本,关闭如图的yixiao01连接端口再打开,即可显示jdk的版本(不关闭则不会显示)
下面是我的shell脚本:
#!/bin/bash
install_jdk() {
echo "批量创建文件夹"
index=3
for ((i=1; i<=index; i++))
do
ssh yixiao0${i} "mkdir -p /export/server/"
ssh yixiao0${i} "mkdir -p /export/software/"
done
echo "文件夹全部创建完成"
echo "开始安装jdk"
echo "开始下载jdk"
if [[ ! -f /export/software/jdk-8u171-linux-x64.tar.gz ]]; then
wget --no-check-certificate -P /export/software https://repo.huaweicloud.com/java/jdk/8u171-b11/jdk-8u171-linux-x64.tar.gz
echo "下载jdk完成"
else
echo "jdk安装包已存在"
fi
echo "开始解压jdk"
tar -zxf /export/software/jdk-8u171-linux-x64.tar.gz -C /export/server/
echo "解压jdk完成"
echo "开始添加jdk环境变量"
ipath="/export/server/"
sed -i '$a\JAVA_HOME=/export/server/jdk1.8.0_171\n\CLASSPATH=.:$JAVA_HOME/lib\n\PATH=$JAVA_HOME/bin:$PATH\n\export JAVA_HOME CLASSPATH PATH' /etc/profile
echo "开始分发jdk"
for ((i=2; i<=index; i++))
do
scp -r /export/server/jdk1.8.0_171 root@yixiao0${i}:/export/server/
scp -r /etc/profile root@yixiao0${i}:/etc/
done
for ((i=1; i<=index; i++))
do
ssh yixiao0${i} "source /etc/profile"
done
echo "==================jdk全部安装成功=============="
}
install_jdk
应该是立即生效的,不过生效的范围是那个脚本运行环境中的。
已参与了 SegmentFault 思否社区 10 周年「问答」打卡 ,欢迎正在阅读的你也加入。