Windows 10和Linux腳本啟動jar包服務器,並設置開機啟動


Windows 10和Linux腳本啟動jar包服務器,並設置開機啟動

現在好多Java服務和應用都是用jar啟動,jar打包成的里面會直接帶有tomcat,所以可以直接啟動,但是如何通過腳本啟動並且設置成開機自啟動

這樣可以省很多事情。方便省事

協議:CC BY-SA 4.0 https://creativecommons.org/licenses/by-sa/4.0/

版權聲明:本文為原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。

一、Windows10腳本自啟動

1.前提是Java環境已經配置好,就是JDK已經安裝完畢

Windows腳本

1.啟動jar腳本

start.bat

@echo off
java -jar E:\java\mina_server_jar\mina_server.jar

2.停止jar腳本(如:jar包端口9090)

stop.bat

@echo off
set port=9090
for /f "tokens=1-5" %%i in ('netstat -ano^|findstr ":%port%"') do (
 echo kill the process %%m who use the port 
 taskkill /pid %%m -t -f
 goto q
)
:q

3.重啟jar腳本(就是上面兩個合起來)

restart.bat

@echo off
set port=9090
for /f "tokens=1-5" %%i in ('netstat -ano^|findstr ":%port%"') do (
 echo kill the process %%m who use the port 
 taskkill /pid %%m -t -f
 goto start
)
:start
java -jar E:\java\mina_server_jar\mina_server.jar

如何把bat服務加入到開機啟動的行列

如果是想開機就啟動的話有個簡單的方法

C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp 將bat放入這里就可以了。

只想用任務計划啟動的話,繼續往下看

二、配置系統的計划任務

打開win10左下角的菜單欄,在搜索框內輸入“任務計划”

001

打開任務計划后,在右邊“操作”中找到“創建任務”

名稱和描述隨意輸入,選擇用戶登錄時運行,並且配置系統選擇win10

002

切換選項卡到觸發器,新建觸發器,選擇登錄時,所有用戶,然后確定

003

切換選項卡到“操作”,新建,操作選擇啟動程序,程序或者腳本填我們前面寫好的.bat文件路徑,然后確定

003

后面兩個選項卡“條件”和“設置”是更加細粒度的條件設置,其中,在設置中,“允許按需允許任務”要打勾,方便測試,

其他的可以根據需求去設置,到這里已經滿足我們的需求了,就不往下做了

到主面板就可以看到我們新增的計划了

003

右擊任務,選擇啟動,彈出啟動界面

注意:360或者安全管家記得放行,因為這些安全程序都提示攔截,記得放行,不要禁用

三、CentOS7.4中使用腳本啟動jar文件

啟動腳本

start.sh

nohup java -Xmx2g -Xms2g -Xss256k -XX:+DisableExplicitGC  -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:LargePageSizeInBytes=128m -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 -Duser.timezone=GMT+8 -jar app-sdt.jar --spring.profiles.active=prod >/dev/null 2>&1 &

或者使用全量腳本

app-service.sh

#!/bin/bash
#source /etc/profile
# Auth:Liucx
# Please change these parameters according to your real env.
# 請把JAVA_HOME改成你自己的環境路徑.
# 如果需要修改啟動所需的配置文件修改 -Dspring.profiles.active=dev 指定環境.
# set Java Home: Remember that dolphin only supports JDK8!
JAVA_HOME=/usr/java/jdk1.8.0_211
#JAVA_HOME=/usr/local/java/jdk1.8.0_11
# application directory
cd `dirname $0`
APP_HOME=`pwd`
APP_NAME="`cd ${APP_HOME} && find -name '*.jar' `"
JAR_HOME_TOW=${APP_NAME:2}
JAR_HOME=${JAR_HOME_TOW%%.*}

echo "=============================================="
echo "========   歡迎使用科瀾腳本啟動jar    ========"
echo "========   生成的日志在本目錄下       ========"
echo "========   日志是$JAR_HOME.log         ========"
echo "=============================================="

# JAR_HOME=`pwd |awk -F"/" '{print $NF}'`
# Java JVM lunch parameters
if [ x"$JAVA_MEM_OPTS" == x ];then
  JAVA_MEM_OPTS="-server -Xms512m -Xmx512m -Xmn128m -Xss256k -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:LargePageSizeInBytes=128m -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 "
fi
# waiting timeout for starting, in seconds
START_WAIT_TIMEOUT=30
psid=0
#/usr/java/jdk1.8.0_211/bin/jps -l | grep test
checkpid() {
  javaps=`$JAVA_HOME/bin/jps -l | grep "$JAR_HOME"`
  if [ -n "$javaps" ]; then
   psid=`echo $javaps | awk '{print $1}'`
  else
   psid=0
  fi
}
start() {
  checkpid
  if [ $psid -ne 0 ]; then
   echo "================================"
   echo "warn: $APP_NAME already started! (pid=$psid)"
   echo "================================"
  else
   echo -n "Starting $APP_NAME ..."
   #-Dspring.profiles.active=dev 指定環境
   nohup $JAVA_HOME/bin/java -jar -Dspring.profiles.active=prod -DCONFIG_ENABLE=true $JAVA_MEM_OPTS ${APP_NAME} >${JAR_HOME}.log 2>&1 &  
   sleep 5
   checkpid
   echo ">>>>>>>>>(pid=$psid) [OK]"
   if [ $psid -ne 0 ]; then
     echo "(pid=$psid) [OK]"
   else
     echo "[Failed]"
   fi
  fi
}
stop() {
  sleep 2
  checkpid
  if [ $psid -ne 0 ]; then
   echo -n "Stopping $APP_NAME ...(pid=$psid) "
   #kill -9 $psid
   kill -9 $psid
   if [ $? -eq 0 ]; then
     echo "[OK]"
   else
     echo "[Failed]"
   fi
#   checkpid
#   if [ $psid -ne 0 ]; then
#     stop
#   fi
  else
   echo "================================"
   echo "warn: $APP_NAME is not running"
   echo "================================"
  fi
}
status() {
  checkpid
  if [ $psid -ne 0 ]; then
   echo "$APP_NAME is running! (pid=$psid)"
  else
   echo "$APP_NAME is not running"
  fi
}
info() {
  echo "System Information:"
  echo "****************************"
  echo `head -n 1 /etc/issue`
  echo `uname -a`
  echo
  echo "JAVA_HOME=$JAVA_HOME"
  echo `$JAVA_HOME/bin/java -version`
  echo
  echo "APP_HOME=$APP_HOME"
  echo "APP_NAME=$APP_NAME"
  echo "****************************"
}
case "$1" in
  'start')
   start
   ;;
  'stop')
   stop
   ;;
  'restart')
   stop
   echo "You restart the application ..."
   start #
   ;;
  'status')
   status
   ;;
  'info')
   info
   ;;
 *)
   echo "啟動方式: $0 {start|stop|restart|status|info}"
   exit 1
esac

使用方法:

直接和需要啟動jar項目放到同一個目錄下。然后給該腳本權限

chmod 755 app-service.sh

啟動,停止,重啟,服務信息,服務狀態使用方法如下:

./app-service.sh start|stop|restart|info|stauts

linux設置開機啟動:

mv start.sh  /etc/init.d
chmod +x start.sh
chkconfig --add servicename

博客地址:https://www.codepeople.cn

=====================================================================

微信公眾號:


免責聲明!

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



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