亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.430618.com 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

推薦:Linux啟動Java程序jar包Shell腳本

 

每次啟動JAVA程序jar包的時候,難道你還在手敲java -jar xxserver.jar……?邊敲邊想著都需要追加哪些參數?

今天就推薦給大家一個幾乎通用的Shell腳本,它支持Java程序Jar包的服務啟動、服務停止、服務狀態查看,同時在腳本中追加了一些語法說明,具體Shell命令,還請大家自行上網學習。

#!/bin/sh

# 該腳本為linux下啟動java程序的腳本
#
# author: luandy
# date: 2021/1/15
#
# 特別注意:
# 該腳本使用系統kill命令來強制終止指定的java程序進程。
# 所以在殺死進程前,可能會造成數據丟失或數據不完整。如果必須要考慮到這類情況,則需要改寫此腳本,
#
# 
# 根據實際情況來修改以下配置信息 ##################################

# JAVA應用程序的名稱
App_NAME=uid-consumer
# JAVA應用程序端口號
SERVER_PORT=9999
# jar包存放路徑
JAR_PATH='/app/uid-consumer'
# jar包名稱
JAR_NAME=uid-consumer-1.1.0-SNAPSHOT.jar
# PID 代表是PID文件
JAR_PID=$JAR_NAME.pid
# 日志輸出文件
LOG_FILE=logs

# java虛擬機啟動參數
JAVA_OPTS="-Xms512m -Xmx512m -XX:MetaspaceSize=512m -XX:MaxMetaspaceSize=1024m -XX:ParallelGCThreads=4 -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=utf-8"

# 根據實際情況來修改以上配置信息 ##################################


# 檢查程序是否處于運行狀態
is_exist() {
  # 查詢出應用服務的進程id,grep -v 是反向查詢的意思,查找除了grep操作的run.jar的進程之外的所有進程
  pid=`ps -ef|grep $JAR_NAME|grep -v grep|awk '{print $2}' `

  # [ ]表示條件測試。注意這里的空格很重要。要注意在'['后面和']'前面都必須要有空格
  # [ -z STRING ] 如果STRING的長度為零則返回為真,即空是真
  # 如果不存在返回0,存在返回1
  if [ -z "${pid}" ]; then
   return 0
  else
    return 1
  fi
}

# ######### Shell腳本中$0、$?、$!、$$、$*、$#、$@等的說明 #########

# $$ Shell本身的PID(ProcessID,即腳本運行的當前 進程ID號)
# $! Shell最后運行的后臺Process的PID(后臺運行的最后一個進程的 進程ID號)
# $? 最后運行的命令的結束代碼(返回值)即執行上一個指令的返回值 (顯示最后命令的退出狀態。0表示沒有錯誤,其他任何值表明有錯誤)
# $- 顯示shell使用的當前選項,與set命令功能相同
# $* 所有參數列表。如"$*"用「"」括起來的情況、以"$1 $2 … $n"的形式輸出所有參數,此選項參數可超過9個。
# $@ 所有參數列表。如"$@"用「"」括起來的情況、以"$1" "$2" … "$n" 的形式輸出所有參數。
# $# 添加到Shell的參數個數
# $0 Shell本身的文件名
# $1~$n 添加到Shell的各參數值。$1是第1參數、$2是第2參數…。

# 服務啟動方法
start() {
  is_exist
  if [ $? -eq "1" ]; then
    echo "$APP_NAME is already running pid is ${pid}"
  else
    # jar服務啟動腳本
    nohup java $JAVA_OPTS -Xloggc:$LOG_FILE/gc/gclog.log -XX:HeapDumpPath=$LOG_FILE/gc/HeapDump.hprof -jar $JAR_PATH/$JAR_NAME >./$LOG_FILE/run.log 2>&1 &
    echo $! > $JAR_PID
    echo "start $APP_NAME successed pid is $! "
    tail -1000f $LOG_FILE/run.log
   fi
  }

# 服務停止方法
stop() {
  # is_exist
  pidf=$(cat $JAR_PID)
  # echo "$pidf" 
  echo "pid = $pidf begin kill $pidf"
  kill $pidf
  rm -rf $JAR_PID
  sleep 2
  # 判斷服務進程是否存在
  is_exist
  if [ $? -eq "1" ]; then
    echo "pid = $pid begin kill -9 $pid"
    kill -9  $pid
    sleep 2
    echo "$APP_NAME process stopped!" 
  else
    echo "$APP_NAME is not running!"
  fi 
}

# 服務運行狀態查看方法
status() {
  is_exist
  if [ $? -eq "1" ]; then
    echo "$APP_NAME is running,pid is ${pid}"
  else
    echo "$APP_NAME is not running!"
  fi
}

# 重啟服務方法
restart() {
  # 調用服務停止命令
  stop
  # 調用服務啟動命令
  start
}

# 幫助說明,用于提示輸入參數信息
usage() {
    echo "Usage: sh run-service.sh [ start | stop | restart | status ]"
    exit 1
}

###################################
# 讀取腳本的第一個參數($1),進行判斷
# 參數取值范圍:{ start | stop | restart | status }
# 如參數不在指定范圍之內,則打印幫助信息
###################################
#根據輸入參數,選擇執行對應方法,不輸入則執行使用說明
case "$1" in
  'start')
    start
    ;;
  'stop')
    stop
    ;;
  'restart')
    restart
    ;;
  'status')
    status
    ;;
  *)
    usage
    ;;
esac
exit 0

趕緊收藏,還等什么,復制粘貼到 run-service.sh 文件中,馬上使用吧!

分享到:
標簽:Java
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定