美文网首页
shell-服务启动脚本

shell-服务启动脚本

作者: 87d6dc4b11a7 | 来源:发表于2022-04-25 13:05 被阅读0次
#!/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

相关文章

网友评论

      本文标题:shell-服务启动脚本

      本文链接:https://www.haomeiwen.com/subject/xqefyrtx.html