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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM