#!/bin/bash
##########################################
# 功能: XX应用启动脚本 #
# 作者: xxx #
# 日期: 2022-xx-xx #
# 版本: V1.0 #
# 注意事项1: 路径请使用绝对路径 #
# 注意事项2: 启停脚本禁止使用rm、mv等高风险命令 #
###########################################
#########应用个性化参数加载##########
export LANG=zh_CN.UTF-8
export USER_MEM_ARGS='-Xms8192M -Xmx8192M -XX:PermSize=256M -XX:MaxPermSize=512M -Dweblogic.threadpool.MinPoolSize=500 -Dweblogic.threadpool.MaxPoolSize=1000'
export JAVA_OPTIONs='-Djava.awt.headless=true'
APP_NAME="AppDemo"
LISTEN_PORT="8080"
######日志输出函数####
function logInfo()
{
echo "$(date +"%Y-%m-%d %H:%M:%S") $1"
}
######执行实际启动的函数####
function doStart()
{
nohup /home/app_dom/bin/startManagedWebLogic.sh ${APP_NAME} > /dev/null 2>&1 &
}
####启动前的检查函数
function doCheck()
{
####启动后检查一下监听端口,避免进程拉起,端口未启动的情况###
count=1
while true
do
if test $count -gt 20
then
logInfo "Error! port ${LISTEN_PORT} is not listen,pelease check!"
break
fi
sleep 30
portNum=`netstat -an|grep LISTEN|egrep ${LISTEN_PORT}|wc -l`
if [ $portNum -eq 1 ]; then
logInfo "${APP_NAME} start sucess!"
break
fi
done
}
######启动前后检查的启动函数########
function startApp()
{
###启动前检查进程是否已存在####
PIDS=`ps -ef | grep -v grep | grep Dweblogic.Name=${APP_NAME} | awk '{print $2}'`
if [[ $PIDS == "" ]];then
logInfo "${APP_NAME} is not exists ,Now starting !"
###判断进程不存在后,执行启动
doStart
###启动后检查
doCheck
else
logInfo "${APP_NAME} already exists! The process number is $PIDS"
fi
}
###执行启动函数(带检查的)
startApp
exit 0
经过ShellCheck检查后,修改为
#!/bin/bash
#########应用个性化参数加载##########
export LANG=zh_CN.UTF-8
export USER_MEM_ARGS='-Xms8192M -Xmx8192M -XX:PermSize=256M -XX:MaxPermSize=512M -Dweblogic.threadpool.MinPoolSize=500 -Dweblogic.threadpool.MaxPoolSize=1000'
export JAVA_OPTIONs='-Djava.awt.headless=true'
APP_NAME="AppDemo"
LISTEN_PORT="8080"
######日志输出函数####
function logInfo()
{
echo "$(date +"%Y-%m-%d %H:%M:%S") $1"
}
######执行实际启动的函数####
function doStart()
{
nohup /home/app_dom/bin/startManagedWebLogic.sh ${APP_NAME} > /dev/null 2>&1 &
}
####启动前的检查函数
function doCheck()
{
####启动后检查一下监听端口,避免进程拉起,端口未启动的情况###
count=1
while true
do
if test $count -gt 20
then
logInfo "Error! port ${LISTEN_PORT} is not listen,pelease check!"
break
fi
sleep 30
portNum=$(netstat -an|grep LISTEN| grep -c ${LISTEN_PORT})
if [[ $portNum -eq 1 ]]; then
logInfo "${APP_NAME} start sucess!"
break
fi
done
}
######启动前后检查的启动函数########
function startApp()
{
###启动前检查进程是否已存在####
PIDS=$(pgrep -f Dweblogic.Name=${APP_NAME})
if [[ $PIDS == "" ]];then
logInfo "${APP_NAME} is not exists ,Now starting !"
###判断进程不存在后,执行启动
doStart
###启动后检查
doCheck
else
logInfo "${APP_NAME} already exists! The process number is $PIDS"
fi
}
###执行启动函数(带检查的)
startApp
exit 0
-eq 等于
-ne 不等于
-gt 大于
-lt 小于
-ge 大于等于
-le 小于等于
参考:
ShellCheck: https://www.shellcheck.net/,https://github.com/koalaman/shellcheck
网友评论