最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java應(yīng)用啟動(dòng)與停止的shell腳本分享

 更新時(shí)間:2023年10月23日 08:08:03   作者:技術(shù)驛站  
這篇文章主要和大家分享三個(gè)shell腳本,分別是jvm啟動(dòng)參數(shù)相關(guān)的setjvment.sh,利用java命令啟動(dòng)進(jìn)程的start.sh和停止java進(jìn)程的stop.sh,有需要的可以參考下

整體思路

基于shell腳本開發(fā)3個(gè)腳本,分別是

  • jvm啟動(dòng)參數(shù)相關(guān)的setjvment.sh,主要是jvm啟動(dòng)相關(guān)參數(shù)配置
  • start.sh,主要是利用java命令啟動(dòng)進(jìn)程,包含classpath和執(zhí)行結(jié)果日志保存相關(guān)設(shè)置
  • stop.sh,主要是停止java進(jìn)程,包括優(yōu)雅停止和強(qiáng)制停止

如果linux沒有安裝jdk,可使用如下命令安裝jdk:

sudo apt update
sudo apt install openjdk-8-jdk

然后在啟動(dòng)的文件.bash_profile中設(shè)置環(huán)境變量JAVA_HOME,

#!/bin/sh
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64

相關(guān)腳本

setjvm

#!/bin/bash

# 設(shè)置Java堆棧大小
JAVA_OPTS="$JAVA_OPTS -Xmn512m -Xms512m -Xmx1024m -XX:MetaspaceSize=64m -XX:MaxMetaspaceSize=256m"
JAVA_OPTS="$JAVA_OPTS -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=8 -XX:-UseAdaptiveSizePolicy"
# 垃圾收集器設(shè)置
JAVA_OPTS="$JAVA_OPTS -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:CMSInitiatingOccupancyFraction=60"
JAVA_OPTS="$JAVA_OPTS -XX:+CMSClassUnloadingEnabled"
# 打印GC日志
JAVA_OPTS="$JAVA_OPTS -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+PrintGCApplicationStoppedTime -XX:+UseGCLogFileRotation"
JAVA_OPTS="$JAVA_OPTS -XX:+PrintHeapAtGC -Xloggc:$work_home/logs/gc.log -XX:GCLogFileSize=1m -XX:NumberOfGCLogFiles=10"
# 打印DUMP日志
JAVA_OPTS="$JAVA_OPTS -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=$work_home/logs"
# 其他設(shè)置
JAVA_OPTS="$JAVA_OPTS -XX:+DisableExplicitGC  -XX:+UseFastAccessorMethods -XX:-UseBiasedLocking"
# 指定隨機(jī)數(shù)生成器的種子源
JAVA_OPTS="$JAVA_OPTS -Djava.security.egd=file:/dev/urandom"
# 設(shè)置java.ext.dirs
JAVA_OPTS="$JAVA_OPTS -Djava.ext.dirs=$JAVA_HOME/jre/lib/ext:$work_home/lib"
# 其他環(huán)境變量或配置設(shè)置
# export OTHER_ENV_VARIABLE=example_value

start

#!/bin/bash

CUR="$0"

while [ -h "$CUR" ]; do
  ls=$(ls -ld "$CUR")
  link=$(expr "$ls" : '.-> (.)$')
  if expr "$link" : '/.*' >/dev/null; then
    CUR="$link"
  else
    CUR=$(dirname "$CUR")/"$link"
  fi
done

CUR_DIR=$(dirname "$CUR")

work_home=$(
  cd "$CUR_DIR/.." >/dev/null
  pwd
)

if [ -z $JAVA_HOME ]; then
  echo "plz set JAVA_HOME env."
  exit 1
fi

if [ -r "$work_home/bin/setenv.sh" ]; then
  . "$work_home/bin/setjvmenv.sh"
fi

CLASSPATH=$CLASSPATH:$work_home/lib/conf
LOG_DIR="$work_home/logs"

if [ ! -d $LOG_DIR ]; then
  mkdir "$LOG_DIR"
fi

main_class="com.toby.dynamic.data.source.start.PointApplication"
count=`ps -ef|grep java|grep $work_home|grep $main_class|grep -v grep|wc -l`
if [ $count != 0 ]; then
  app_id=`ps -ef|grep java|grep $work_home|grep $main_class|grep -v grep|awk '{print $2}'`
  echo "already running with pid $app_id, start aborted."
else
  echo "use java_home $JAVA_HOME"
  echo "use work_home $work_home"

  exec $JAVA_HOME/bin/java $JAVA_OPTS -cp $CLASSPATH \
  -Dwork.home=$work_home -Djava.io.tmpdir=$work_home \
  $main_class >$LOG_DIR/server.log 2>&1 &

  echo "server started."
fi

stop

#!/bin/bash

PRG="$0"
while [ -h "$PRG" ]; do
  ls=$(ls -ld "$PRG")
  link=$(expr "$ls" : '.-> (.)$')
  if expr "$link" : '/.*' >/dev/null; then
    PRG="$link"
  else
    PRG=$(dirname "$PRG")/"$link"
  fi
done

PRGDIR=$(dirname "$PRG")

work_home=$(
  cd "$PRGDIR/.." >/dev/null
  pwd
)

main_class="com.toby.dynamic.data.source.start.PointApplication"
count=`ps -ef|grep java|grep $work_home|grep $main_class|grep -v grep|wc -l`
echo " stop server start."
if [ $count == 0 ]; then
  echo "already stop,return."
  exit 0
fi

app_id=`ps -ef|grep java|grep $work_home|grep $main_class|grep -v grep|awk '{print $2}'`
# 請(qǐng)求優(yōu)雅退出
kill -15 $app_id
SLEEP=5
STOPPED=0

while [ $SLEEP -ge 0 ]; do
  count=`ps -ef|grep java|grep $work_home|grep $main_class|grep -v grep|wc -l`
  if [ $count == 0 ]; then
    STOPPED=1
    echo " server stopped."
    break;
  fi

  if [ $SLEEP -gt 0 ]; then
    sleep 1
  fi

  if [ $SLEEP -eq 0 ]; then
    echo "server did not stopped in time."
  fi
  SLEEP=`expr $SLEEP - 1 `
done

if [ $STOPPED -eq 0 ]; then
  echo "server killed fore"
  SLEEP=5
  kill -15 $app_id
  while [ $SLEEP -ge 0 ]; do
    count=`ps -ef|grep java|grep $work_home|grep $main_class|grep -v grep|wc -l`
    if [ $count == 0 ]; then
      STOPPED=1
      echo " server has been killed."
      break;
    fi

    if [ $SLEEP -gt 0 ]; then
      sleep 1
    fi

    if [ $SLEEP -eq 0 ]; then
      echo "server did not stopped in time."
    fi
    SLEEP=`expr $SLEEP - 1 `
  done
  if [ $STOPPED -eq 0 ]; then
    echo "server has not been killed completely yet."
  fi
fi

執(zhí)行結(jié)果

以上就是java應(yīng)用啟動(dòng)與停止的shell腳本分享的詳細(xì)內(nèi)容,更多關(guān)于java應(yīng)用啟動(dòng)與停止的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 殺掉oracle在線用戶腳本分享

    殺掉oracle在線用戶腳本分享

    這篇文章主要介紹了殺掉oracle在線用戶腳本,需要的朋友可以參考下
    2014-03-03
  • win下調(diào)用putty執(zhí)行命令腳本分享

    win下調(diào)用putty執(zhí)行命令腳本分享

    這篇文章主要介紹了win下調(diào)用putty執(zhí)行命令腳本,可以利用這個(gè)實(shí)現(xiàn)一些自動(dòng)化的工作,需要的朋友可以參考下
    2014-03-03
  • Shell實(shí)現(xiàn)的iptables管理腳本分享

    Shell實(shí)現(xiàn)的iptables管理腳本分享

    這篇文章主要介紹了Shell實(shí)現(xiàn)的iptables管理腳本分享,本文腳本實(shí)現(xiàn)了添加、刪除、查看、停止、啟動(dòng)等,需要的朋友可以參考下
    2014-12-12
  • shell備份文件、重命名文件、刪除指定文件的3個(gè)腳本分享

    shell備份文件、重命名文件、刪除指定文件的3個(gè)腳本分享

    這篇文章主要介紹了shell備份文件、重命名文件、刪除指定文件的3個(gè)腳本分享,是學(xué)習(xí)shell時(shí)的練習(xí)腳本,shell新手朋友可以參考下哦
    2014-07-07
  • 設(shè)置Shell腳本開機(jī)自啟的方法和實(shí)例

    設(shè)置Shell腳本開機(jī)自啟的方法和實(shí)例

    這篇文章主要介紹了設(shè)置Shell腳本開機(jī)自啟的方法和實(shí)例,文中通過(guò)代碼示例給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-02-02
  • linux踢出遠(yuǎn)程登錄用戶命令(總結(jié)篇)

    linux踢出遠(yuǎn)程登錄用戶命令(總結(jié)篇)

    本文給大家總結(jié)了linux踢出遠(yuǎn)程登錄用戶命令,通過(guò)linux命令介紹了 tty 踢出登錄的操作方法,本文給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧
    2024-01-01
  • Linux 中批量提取文件夾下所有目錄及文件名稱

    Linux 中批量提取文件夾下所有目錄及文件名稱

    這篇文章主要介紹了Linux 中批量提取文件夾下所有目錄及文件名稱 ,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-05-05
  • Linux命令之-rm命令使用示例

    Linux命令之-rm命令使用示例

    今天我要講的是一個(gè)比較危險(xiǎn)的命令,rm?命令,你可以沒聽過(guò)?rm?命令,但是刪庫(kù)跑路你不可能沒聽過(guò)吧,所以接下來(lái)小編就帶大家詳細(xì)的了解一下Linux?命令?-?rm,需要的朋友可以參考下
    2023-07-07
  • 淺談Linux 腳本 sh 和 ./ 的區(qū)別

    淺談Linux 腳本 sh 和 ./ 的區(qū)別

    下面小編就為大家?guī)?lái)一篇淺談Linux 腳本 sh 和 ./ 的區(qū)別。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-01-01
  • linux腳本判斷條件總結(jié)(必看)

    linux腳本判斷條件總結(jié)(必看)

    下面小編就為大家?guī)?lái)一篇linux腳本判斷條件總結(jié)(必看)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-02-02

最新評(píng)論

嘉禾县| 垫江县| 靖西县| 濉溪县| 淮滨县| 温州市| 石阡县| 长春市| 静乐县| 林口县| 吉首市| 昌黎县| 舟曲县| 莱西市| 三亚市| 罗城| 灵石县| 兴化市| 安仁县| 平和县| 子洲县| 长白| 苏尼特右旗| 游戏| 手游| 茶陵县| 泰州市| 建瓯市| 永春县| 庆安县| 苍溪县| 汉沽区| 隆昌县| 全椒县| 吉林省| 洛南县| 米易县| 师宗县| 平湖市| 乌什县| 千阳县|