Linux 啟動Jar腳本&&設置開機自啟【超級詳細】
- 概要
- 服務器開機自啟
- 服務重啟腳本
概要
最近在Linux服務器中部署了一個項目(單機版),每次更新服務的時候需要用到好幾個命令,停止服務,再重啟,并且服務器突然重啟后,還需要人工重啟服務,非常繁瑣,下面展示了兩個腳本的寫法。。
服務器開機自啟
- 檢查系統是否安裝jdk;
java -version
- 查看jdk安裝位置
whereis java
- 編寫腳本
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
- 添加腳本至你的服務器
將以上腳本放至到目錄
/etc/systemd/system
下面
- 給以上腳本添加權限
chmod 777 restart_yhfw.service
- 重啟服務器,查看自己的jar服務是否啟動
服務重啟腳本
- 編寫腳本
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" ]; thenecho "Error: JAR file does not exist at $JAR_FILE"exit 1
fi# 檢查是否有讀取權限
if [ ! -r "$JAR_FILE" ]; thenecho "Error: No read permission for JAR file at $JAR_FILE"exit 1
fi# 檢查配置文件是否存在
if [ ! -f "$CONFIG_FILE" ]; thenecho "Error: Configuration file does not exist at $CONFIG_FILE"exit 1
fi# 檢查是否有讀取權限
if [ ! -r "$CONFIG_FILE" ]; thenecho "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" ]; thenecho "Stopping ruoyi-admin.jar with PID $PID..."kill -15 $PIDsleep 5 # 給出一些時間讓進程優雅地關閉if ps -p $PID > /dev/null; thenecho "Process did not stop gracefully, forcing shutdown."kill -9 $PIDelseecho "ruoyi-admin.jar stopped successfully."fi
elseecho "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 ]; thenecho "ruoyi-admin.jar started successfully."
elseecho "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
- 給腳本添加權限
chmod 777 restart_yhfw.sh
- 執行腳本測試
sh restart_yhfw.sh
下一篇:單機版本服務如何做到無感更新