• centos7 配置java程序自启动


    环境:

    os版本:centos7.6

    jdl版本:jdk1.8

    项目类型:spring-boot 其他也一样

    安装路径: /opt/application/

    步骤:

    1、配置java启动脚本

    2、配置启动脚本

    boot.sh 通用启动脚本  注意脚本要有执行权限:chmod +x boot.sh

    #!/bin/bash
    # Java ENV
    export JAVA_HOME=/usr/java/jdk1.8.0_251-amd64
    export JRE_HOME=${JAVA_HOME}/jre
    
    # Apps Info
    # 应用存放地址
    APP_HOME=/opt/application
    # 应用名称
    APP_NAME=$1
    
    # jvm参数配置
    JAVA_OPTS="-verbosegc"
    JAVA_OPTS="${JAVA_OPTS} -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+DisableExplicitGC"
    JAVA_OPTS="${JAVA_OPTS} -Dspring.profiles.active=prod"
    
    # Shell Info
    
    # 使用说明,用来提示输入参数
    usage() {
        echo "Usage: sh boot [APP_NAME] [start|stop|restart|status]"
        exit 1
    }
    
    # 检查程序是否在运行
    is_exist(){
            # 获取PID
            PID=$(ps -ef |grep ${APP_NAME} | grep -v $0 |grep -v grep |awk '{print $2}')
            # -z "${pid}"判断pid是否存在,如果不存在返回1,存在返回0
            if [ -z "${PID}" ]; then
                    # 如果进程不存在返回1
                    return 1
            else
                    # 进程存在返回0
                    return 0
            fi
    }
    
    # 定义启动程序函数
    start(){
            is_exist
            if [ $? -eq "0" ]; then
                    echo "${APP_NAME} is already running, PID=${PID}"
            else
                    nohup ${JRE_HOME}/bin/java ${JAVA_OPTS} -jar  ${APP_HOME}/${APP_NAME} >/dev/null 2>&1 &
                    PID=$(echo $!)
                    echo "${APP_NAME} start success, PID=$!"
            fi
    }
    
    # 停止进程函数
    stop(){
            is_exist
            if [ $? -eq "0" ]; then
                    kill -9 ${PID}
                    echo "${APP_NAME} process stop, PID=${PID}"
            else
                    echo "There is not the process of ${APP_NAME}"
            fi
    }
    
    # 重启进程函数
    restart(){
            stop
            start
    }
    
    # 查看进程状态
    status(){
            is_exist
            if [ $? -eq "0" ]; then
                    echo "${APP_NAME} is running, PID=${PID}"
            else
                    echo "There is not the process of ${APP_NAME}"
            fi
    }
    
    case $2 in
    "start")
            start
            ;;
    "stop")
            stop
            ;;
    "restart")
            restart
            ;;
    "status")
           status
            ;;
        *)
        usage
        ;;
    esac
    exit 0

    启动脚本:start.sh

    #!/bin/bash
    sh /opt/application/boot.sh proxyee-endpoint-server-2.2.1.RELEASE.jar $1

    配置systemctl的文件  vim  /lib/systemd/system/endpoint.service

    [Unit]
    Description=endpoint-server 
    After=network.target
     
    [Service]
    Type=forking
    ExecStart=/opt/application/start.sh start
    ExecReload=/opt/application/start.sh restart
    ExecStop=/opt/application/start.sh stop
     
    [Install]
    WantedBy=multi-user.target

    执行命令:

    修改服务配置重新生效:systemctl daemon-reload

    systemctl enable  endpoint  使配置生效,注意endpoint是项目名,start.sh需要改jar文件的名字,boot.sh需要修改项目的路径和spring环境变量配置

    完成后reboot执行重启命令,看服务是否已经启动成功。

    附赠:

    开机启动:systemctl enable endpoint

    启动:systemctl start endpoint

    关闭:systemctl stop endpoint

    重启:systemctl restart endpoint

    查看状态:systemctl status endpoint

    修改服务配置重新生效:systemctl daemon-reload

    查看所有的开机启动项:

    systemctl list-unit-files|grep enabled

  • 相关阅读:
    docker save——保存镜像到本地
    Python数据结构学习笔记(三)
    Python数据结构学习笔记(二)
    python优良代码例子(一)
    NFS挂载失败,报No route to host
    python数据结构学习笔记(一)
    Centos7一键安装jdk1.8 shell脚本
    蓝海卓越计费管理系统任意文件读取
    ubuntu设置自定义脚本开机自启动
    Navicat Premium15 注册激活数据库管理工具
  • 原文地址:https://www.cnblogs.com/zhangshiwen/p/12896006.html
Copyright © 2020-2023  润新知