改动地方
1、在测试应用为用友NC6,因为NC的集群有master的概念,非master节点依赖于master,所以,对于此种情况,必须首先判定master正常启动,才能启动其他节点。
经项目测试,发现有时master端口打开后就去启动其他节点,有时会遇到master not ready的错误,因此,手动在master端口起来后增加sleep 20.
2、其他所有server因为没有依赖关系,所以,可以并行启动,减小启动时间。
3、使用函数处理启动过程和判断端口打开过程,有效较少代码数量。
#!/bin/bash
#author:wjf
#date:2015/05/19
#version:2.0
#测试环境为wls1036水平集群
v_curr_user=`whoami`
#------------实际was和代码安装的用户,比如用ufida,就直接把”nc63“改成”ufida"就行。
v_start_user=uweblogic
#------------用于安装和启动weblogic服务器的用户
v_admin_url=http://10.10.71.106:9001
#------------管理服务器的url
v_dir_domain_bin=/weblogic/Oracle/Middleware/user_projects/domains/gyhr_domain/bin
#------------启动域的bin目录路径
v_admin_port=9001
#------------weblogic管理服务器端口
#根据服务端口是否打开判定服务时候已经启动
f_is_service_start()
{
v_is_port_open=0
while [ ${v_is_port_open} -eq 0 ]
do
sleep 10
v_is_port_open=`netstat -ano |grep ${1}|wc -l`
done
}
#启动受管理服务器
f_start_ms()
{
echo "启动受管服务器${1}"
cd ${v_dir_domain_bin}
nohup ./startManagedWebLogic.sh ${1} ${v_admin_url} &
f_is_service_start ${2}
echo "${1}启动完毕"
echo ""
}
#主代码部分
if [ ${v_curr_user} = ${v_start_user} ]
then
#启动服务代码部分
echo "启动管理服务器"
cd ${v_dir_domain_bin}
nohup ./startWebLogic.sh &
f_is_service_start ${v_admin_port}
echo "启动管理服务器完毕"
echo ""
#---------------修改定制部分(始)------------------
f_start_ms master 8001
sleep 20
f_start_ms server1 8002 &
f_start_ms server2 80003 &
#---------------修改定制部分(终)-------------------
else
echo "当前用户为${v_curr_user}"
echo "建议使用${v_start_user}启动服务"
echo "请检查当前用户环境"
fi