Linux 启动Jar脚本&&设置开机自启【超级详细】

发布于:2025-03-28 ⋅ 阅读:(26) ⋅ 点赞:(0)

Linux 启动Jar脚本&&设置开机自启【超级详细】

概要

最近在Linux服务器中部署了一个项目(单机版),每次更新服务的时候需要用到好几个命令,停止服务,再重启,并且服务器突然重启后,还需要人工重启服务,非常繁琐,下面展示了两个脚本的写法。。

服务器开机自启

  1. 检查系统是否安装jdk;
java -version

在这里插入图片描述

  1. 查看jdk安装位置
whereis java

在这里插入图片描述

  1. 编写脚本restart_yhfw.service
[Unit]
Description=Ruoyi Admin Service
After=network.target

[Service]
Type=simple
# 修改下面的java位置和你的jar包位置
ExecStart=/usr/local/jdk1.8.0_341/bin/java -jar /usr/local/project/yhfw/ruoyi-admin.jar --spring.config.location=/usr/local/project/yhfw/application.yml
ExecStop=/bin/kill -TERM $MAINPID
Restart=no
User=root
# 修改下面的java位置
Environment="JAVA_HOME=/usr/local/jdk1.8.0_341"
Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

[Install]
WantedBy=multi-user.target
  1. 添加脚本至你的服务器

将以上脚本放至到目录/etc/systemd/system下面

在这里插入图片描述

  1. 给以上脚本添加权限
chmod 777 restart_yhfw.service
  1. 重启服务器,查看自己的jar服务是否启动
    在这里插入图片描述

服务重启脚本

  1. 编写脚本restart_yhfw.sh

重点!!!重点!!!重点!!!需要将以下路径和jar包名称更换成你自己的

#!/bin/bash

# 定义变量(更换你的jar包路径)
JAR_FILE="/usr/local/project/yhfw/ruoyi-admin.jar"
CONFIG_FILE="/usr/local/project/yhfw/application.yml"
LOG_FILE="/usr/local/project/yhfw/nohup.out"

# 检查JAR文件是否存在
if [ ! -f "$JAR_FILE" ]; then
    echo "Error: JAR file does not exist at $JAR_FILE"
    exit 1
fi

# 检查是否有读取权限
if [ ! -r "$JAR_FILE" ]; then
    echo "Error: No read permission for JAR file at $JAR_FILE"
    exit 1
fi

# 检查配置文件是否存在
if [ ! -f "$CONFIG_FILE" ]; then
    echo "Error: Configuration file does not exist at $CONFIG_FILE"
    exit 1
fi

# 检查是否有读取权限
if [ ! -r "$CONFIG_FILE" ]; then
    echo "Error: No read permission for configuration file at $CONFIG_FILE"
    exit 1
fi

# 获取进程ID
PID=$(ps -ef | grep "${JAR_FILE}" | grep -v "grep" | awk '{print $2}')

# 检查是否有进程在运行
if [ -n "$PID" ]; then
    echo "Stopping ruoyi-admin.jar with PID $PID..."
    kill -15 $PID
    sleep 5 # 给出一些时间让进程优雅地关闭
    if ps -p $PID > /dev/null; then
        echo "Process did not stop gracefully, forcing shutdown."
        kill -9 $PID
    else
        echo "ruoyi-admin.jar stopped successfully."
    fi
else
    echo "ruoyi-admin.jar is not running. Starting it now."
fi

# 启动应用
echo "Starting ruoyi-admin.jar with configuration from $CONFIG_FILE..."
nohup java -jar -Dspring.config.location=file:$CONFIG_FILE ${JAR_FILE} > ${LOG_FILE} 2>&1 &
if [ $? -eq 0 ]; then
    echo "ruoyi-admin.jar started successfully."
else
    echo "Failed to start ruoyi-admin.jar. Check the log file for more details."
fi

# 打印nohup的日志
echo "Printing yhfw log..."
tail -f /usr/local/project/yhfw/ruoyi-admin.log
  1. 给脚本添加权限
chmod 777 restart_yhfw.sh
  1. 执行脚本测试
sh restart_yhfw.sh

下一篇:单机版本服务如何做到无感更新