一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

推薦:Linux啟動(dòng)Java程序jar包Shell腳本

 蘇醒的貝殼 2021-01-16

每次啟動(dòng)Java程序jar包的時(shí)候,難道你還在手敲java -jar xxserver.jar……?邊敲邊想著都需要追加哪些參數(shù)?

今天就推薦給大家一個(gè)幾乎通用的Shell腳本,它支持Java程序Jar包的服務(wù)啟動(dòng)、服務(wù)停止、服務(wù)狀態(tài)查看,同時(shí)在腳本中追加了一些語(yǔ)法說(shuō)明,具體Shell命令,還請(qǐng)大家自行上網(wǎng)學(xué)習(xí)。

#!/bin/sh

# 該腳本為L(zhǎng)inux下啟動(dòng)java程序的腳本
#
# author: luandy
# date: 2021/1/15
#
# 特別注意:
# 該腳本使用系統(tǒng)kill命令來(lái)強(qiáng)制終止指定的java程序進(jìn)程。
# 所以在殺死進(jìn)程前,可能會(huì)造成數(shù)據(jù)丟失或數(shù)據(jù)不完整。如果必須要考慮到這類情況,則需要改寫此腳本,
#
# 
# 根據(jù)實(shí)際情況來(lái)修改以下配置信息 ##################################

# JAVA應(yīng)用程序的名稱
APP_NAME=uid-consumer
# JAVA應(yīng)用程序端口號(hào)
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虛擬機(jī)啟動(dòng)參數(shù)
JAVA_OPTS="-Xms512m -Xmx512m -XX:MetaspaceSize=512m -XX:MaxMetaspaceSize=1024m -XX:ParallelGCThreads=4 -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=utf-8"

# 根據(jù)實(shí)際情況來(lái)修改以上配置信息 ##################################


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

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

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

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

# 服務(wù)啟動(dòng)方法
start() {
  is_exist
  if [ $? -eq "1" ]; then
    echo "$APP_NAME is already running pid is ${pid}"
  else
    # jar服務(wù)啟動(dòng)腳本
    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
  }

# 服務(wù)停止方法
stop() {
  # is_exist
  pidf=$(cat $JAR_PID)
  # echo "$pidf" 
  echo "pid = $pidf begin kill $pidf"
  kill $pidf
  rm -rf $JAR_PID
  sleep 2
  # 判斷服務(wù)進(jìn)程是否存在
  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 
}

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

# 重啟服務(wù)方法
restart() {
  # 調(diào)用服務(wù)停止命令
  stop
  # 調(diào)用服務(wù)啟動(dòng)命令
  start
}

# 幫助說(shuō)明,用于提示輸入?yún)?shù)信息
usage() {
    echo "Usage: sh run-service.sh [ start | stop | restart | status ]"
    exit 1
}

###################################
# 讀取腳本的第一個(gè)參數(shù)($1),進(jìn)行判斷
# 參數(shù)取值范圍:{ start | stop | restart | status }
# 如參數(shù)不在指定范圍之內(nèi),則打印幫助信息
###################################
#根據(jù)輸入?yún)?shù),選擇執(zhí)行對(duì)應(yīng)方法,不輸入則執(zhí)行使用說(shuō)明
case "$1" in
  'start')
    start
    ;;
  'stop')
    stop
    ;;
  'restart')
    restart
    ;;
  'status')
    status
    ;;
  *)
    usage
    ;;
esac
exit 0

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

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    色综合伊人天天综合网中文| 国产三级视频不卡在线观看| 欧美午夜色视频国产精品| 国产成人亚洲精品青草天美| 日本人妻精品中文字幕不卡乱码| 高清在线精品一区二区| 亚洲男人天堂成人在线视频| 国产高清三级视频在线观看| 日韩国产亚洲一区二区三区| 日本不卡在线视频你懂的| 日本一二三区不卡免费| 国产又色又爽又黄的精品视频| 午夜午夜精品一区二区| 嫩呦国产一区二区三区av| 欧美日韩亚洲国产av| 日本丁香婷婷欧美激情| 日本高清视频在线观看不卡| 久久人人爽人人爽大片av| 成年人视频日本大香蕉久久| 国产一区二区三区午夜精品| 中文字幕乱子论一区二区三区| 亚洲视频偷拍福利来袭| 日韩高清毛片免费观看| 日韩精品小视频在线观看| 亚洲日本中文字幕视频在线观看| 欧美一区二区三区性视频| 日韩一区二区三区久久| 亚洲欧美日韩另类第一页| 亚洲国产日韩欧美三级| 欧美日韩欧美国产另类| 日本最新不卡免费一区二区 | 亚洲最新中文字幕在线视频| 国产欧美日韩在线精品一二区| 激情少妇一区二区三区| 美女黄色三级深夜福利| 好吊妞视频免费在线观看| 国产成人av在线免播放观看av| 国产精品激情在线观看| 日韩中文字幕欧美亚洲| 日韩一本不卡在线观看| 亚洲国产成人精品福利|