zoukankan      html  css  js  c++  java
  • 编写通用shell脚本启动java项目,适用于多数服务,只需修改服务名即可

    文件名:service-user.sh

    文件内容:

    ##shell脚本的头文件必须有
    #!/bin/sh

    ##再次配置java环境变量以防报其他错误
    ## java env
    #jdk安装目录
    export JAVA_HOME=/usr/java/jdk1.8.0_144
    export JRE_HOME=$JAVA_HOME/jre

    ## service name
    APP_NAME=user

    ##服务存放的文件夹
    SERVICE_DIR=/service/$APP_NAME
    ##服务名
    SERVICE_NAME=edu-service-$APP_NAME
    ##jar包的名字
    JAR_NAME=$SERVICE_NAME.jar
    ##生成进程文件
    PID=$SERVICE_NAME.pid

    ##进入服务存放的文件夹
    cd $SERVICE_DIR

    ##接收一个从linux控制台输入的参数 ./service-user.sh start/stop/restart
    case "$1" in

    ##输入参数为start时启动项目
    start)
    ##nohup守护进程启动项目,即使退出了终端项目仍在运行;/dev/null把日志输入到空即不输出日志到notout.out,因为项目里面已经有log4j日志了
    nohup $JRE_HOME/bin/java -Xms256m -Xmx512m -jar $JAR_NAME >/dev/null 2>&1 &
    echo $! > $SERVICE_DIR/$PID
    echo "=== start $SERVICE_NAME"
    ;;

    ##输入参数为stop时停止项目
    stop)
    ##杀死进程id即edu-service-user.pid
    kill `cat $SERVICE_DIR/$PID`
    #删除进程pid的文件
    rm -rf $SERVICE_DIR/$PID
    echo "=== stop $SERVICE_NAME"

    #等待5s
    sleep 5
    ##
    ## edu-service-aa.jar
    ## edu-service-aa-bb.jar
    ##获取进程id -w是全匹配,不加-w就是模糊匹配,可能会造成误杀进程
    P_ID=`ps -ef | grep -w "$SERVICE_NAME" | grep -v "grep" | awk '{print $2}'`
    #如果进程id为空就提示进程不存在或者已经停止
    if [ "$P_ID" == "" ]; then
    echo "=== $SERVICE_NAME process not exists or stop success"
    ##如果进程id不为空就强杀进程
    else
    echo "=== $SERVICE_NAME process pid is:$P_ID"
    echo "=== begin kill $SERVICE_NAME process, pid is:$P_ID"
    kill -9 $P_ID
    fi
    ;;

    ##输入参数为restart时重启项目
    restart)
    $0 stop
    sleep 2
    $0 start
    echo "=== restart $SERVICE_NAME"
    ;;

    ##什么都不输入时重启项目
    *)
    ## restart 先停止再重启可以避免进程冲突,因为这样每次生成的进程id都不一样
    $0 stop
    sleep 2
    $0 start
    ;;

    esac
    exit 0

  • 相关阅读:
    bitmap解码
    好用的dos命令
    Navicat Premium 12.0.18 / 12.0.24安装与激活
    Linux基本概念与常用命令
    Hbuilder+MUI(一)
    VS2015 运行项目报错“无可用源”,无法加载“C:WindowsMicrosoft.NETassemblyGAC_MSILSystem.Netv4.0_4.0.0.0__b03f5f7f11d50a3aSystem.Net.dll”这类型错误
    报错:找到了与该请求匹配的多个操作
    ACCESS迁移到SQLSERVE的两种方法
    C# 调用HTTP接口两种方式Demo
    转:WebApi(二)
  • 原文地址:https://www.cnblogs.com/leeSmall/p/7507808.html
Copyright © 2011-2022 走看看