美文网首页
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