• CentOS7.6上实现Spring Boot(JAR包)开机自启


    前言

    Linux自启(或开机自启)指的是在Linux系统启动时自动运行特定的程序或脚本。当计算机启动时,操作系统会按照一定的顺序加载系统服务和配置,其中包括自动启动一些应用程序或服务。这些应用程序或服务会在系统启动后自动运行,以提供特定的功能或服务。

    开机自启的好处在于可以在系统启动时自动恢复之前的工作状态,减少手动干预,同时确保特定的服务或应用程序始终处于运行状态,提供持续的服务。

    sh脚本是指Shell脚本,是一种在Unix/Linux系统上运行的脚本文件,通常使用Shell编程语言来编写。Shell是操作系统的一种命令行解释器,它可以用来执行操作系统命令、管理文件系统、处理文本数据等。

    Shell脚本是一个纯文本文件,以.sh扩展名结尾。它包含一系列Shell命令和控制结构,用于自动化完成一系列任务。通过编写Shell脚本,可以将一系列复杂的操作和任务集中到一个文件中,并通过运行脚本来实现这些操作,从而简化了操作过程并提高了效率。

    一、创建工作目录

    Spring Boot是一款方便开发者快速搭建基于Spring的应用程序的工具。而Spring Boot可以方便的加载外部配置文件,只需要将配置文件放在指定的位置即可。具体实现如下:

    mkdir -p /home/java-server/test-demo
    
    • 1

    2、创建启动脚本

    进入jar目录:

    cd  /home/java-server/test-demo
    
    • 1

    创建脚本文件:

    vim start.sh
    
    • 1

    启动脚本内容:

    #!/bin/sh
    export LANG="en_US.UTF-8"
    cd /home/java-server/test-demo
    runMessage=`ps aux | grep \`cat pidfile.txt\``
    projectStartCommand="/usr/local/java/jdk1.8.0_131/bin/java -jar xxx.jar"
    if [[ $runMessage == *$projectStartCommand* ]]
    then
        echo "Application has starting ,restarting..."
        kill -9 `cat pidfile.txt`
        nohup /usr/local/java/jdk1.8.0_131/bin/java -jar xxx.jar -java.tmp.dir=/home/java-server/test-demo/temp >/dev/null 2>&1 & echo $! > pidfile.txt
    else
        echo "Application has stopped ,starting..."
        nohup /usr/local/java/jdk1.8.0_131/bin/java -jar xxx.jar -java.tmp.dir=/home/java-server/test-demo/temp >/dev/null 2>&1 & echo $! > pidfile.txt
    fi
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 脚本中/home/java-server/test-demo就是jar包所在的,可以根据实际情况定。
    • xxx.jar为实际的jar包名称。
    • /usr/local/java/jdk1.8.0_131/bin/java为jdk环境所在路径。

    3、创建停止脚本

    进入jar目录

     cd  /home/java-server/test-demo
    
    • 1

    创建脚本文件:

    vim stop.sh
    
    • 1

    启动脚本内容:

    #!/bin/sh
    cd /home/java-server/test-demo
    PID=$(cat pidfile.txt)
    if [ ${PID} ]; 
    then
        echo 'Application is stpping...'
        echo kill $PID DONE
        kill $PID
    else
        echo 'Application is already stopped...'
    fi
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    4、设置开机自启

    进入system:

    # 进入system
    cd /usr/lib/systemd/system/ 
    
    
    • 1
    • 2
    • 3

    创建自启脚本:

    vim xxx.service
    
    
    • 1
    • 2

    xxx.service为脚本的名称,一般来就是jar包前缀名称一致,比如:test-demo.service

    内容如下:

    [Unit]
    Description=xxx
    After=network.target
    
    [Service]
    Type=forking
    ExecStart=/home/java-server/test-demo/start.sh
    ExecStop=/home/java-server/test-demo/stop.sh
    PrivateTmp=true
    
    [Install]
    WantedBy=multi-user.target
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • Description:描述,一般为项目名称
    • ExecStart:开启脚本位置
    • ExecStop:停止脚本位置

    设置脚本权限:

    systemctl daemon-reload
    systemctl enable xxx.service
    
    
    • 1
    • 2
    • 3

    启动|停止命令:

    # 启动
    systemctl start xxx
    
    # 停止
    systemctl stop xxx
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    xxx就是xxx.service的前缀。

  • 相关阅读:
    加粗,倾斜,删除线,下划线
    XMLHttpRequest和Fetch API
    .net 杂谈之二
    2022-09-08 mysql/stonedb-慢SQL-出现问题的SQL-Q2
    数据结构初阶之栈和队列--C语言实现
    scipy 与 sympy 模块在数学建模中的应用
    Electron是什么以及可以做什么
    手把手教你搭建K8S集群
    1.6 CAN通信 F28335-Simulink仿真自动代码生成
    初识搜索:百度搜索产品经理的第一课
  • 原文地址:https://blog.csdn.net/lcy1619260/article/details/132666400