linux下java如何重启,linux下通用的java程序启动关闭重启脚本

纯手写,只需要修改一些配置变量,就可以用来做起动脚本了。

并且除了能起动、还支持关闭、重启、查看是否正在运行的功能。

给大家演示一下效果:

65aa2dd177f480a02ebad072f8a5f293.png

#!/bin/bash

# MAINTAINER gaoyaohua "gaoyh@tingyun.com" www.updn.cn

# tingyun service

APPNAME=dc-backend-server

CONF=spring-config-server.xml

APPDIR=$(dirname $(cd `dirname $0`; pwd))

TINGYUNDIR=$(dirname ${APPDIR})

JAVA_HOME=${TINGYUNDIR}/java

LIB=${APPDIR}/target/lib

CLASSPATH=${APPDIR}/target/conf

PROPS_FILE=${APPDIR}/conf/conf-deploy.properties

PROPS_ENCODING=UTF-8

LOGDIR=${APPDIR}/logs

APPPID=${APPDIR}/run/${APPNAME}.pid

LOCKFILE=${APPDIR}/lock/$APPNAME

SHUTDOWN_WAIT=1

# java options

JAVA_OPTS="-Xmx2048M -Xms512M -Xmn256M -XX:SurvivorRatio=1 -Xss256k -XX:PermSize=32M -XX:MaxPermSize=72M -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:CMSFullGCsBeforeCompaction=0 -XX:+CMSClassUnloadingEnabled -XX:LargePageSizeInBytes=128M -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=80 -XX:SoftRefLRUPolicyMSPerMB=0 -XX:+PrintClassHistogram -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:-HeapDumpOnOutOfMemoryError -Xloggc:"$LOGDIR"/$APPNAME-gc.log -XX:HeapDumpPath="$LOGDIR"/$APPNAME-dump"

# jmxremote options 默认注释为关掉

#JMX_OPTS=-Dcom.sun.management.jmxremote.port=10004 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false

# enter main class start

ENTER="com.networkbench.newlens.datacollector.Bootstrap"

if [ -d "$LIB" ]; then

for i in "$LIB"/*.jar; do

CLASSPATH="$CLASSPATH":"$i"

done

fi

start() {

kpid="`ps x | grep "DappName=$APPNAME" | grep -v grep | awk '{print $1}'`"

if [ -n "$kpid" ] && [ -f $LOCKFILE ] && [ -f $APPPID ];then

read kpid < $APPPID

echo -e "$APPNAME is \033[32m running \033[0m"

return 0

fi

echo -n "$APPNAME start " && echo -ne "\033[s ."

nohup $JAVA_HOME/bin/java -DappName="$APPNAME" $JAVA_OPTS -Dtingyunpath="$APPDIR" -Dsharedpath="$TINGYUNDIR/shared" -Dwork.dir="$APPDIR" -Dconf=$CONF -Dprops=$PROPS_FILE -DpropsEncoding=$PROPS_ENCODING -Dnohup=true -Dpid=$$ -Dpid.file=$APPPID -DdiagnoseOnSignal=ALRM $JMX_OPTS -cp $CLASSPATH $ENTER >> "$LOGDIR"/nohup_"$APPNAME" 2>&1 &

RETVAL=$? && [ $RETVAL = 0 ] && touch $LOCKFILE && echo -e "\033[u\033[K [ \033[32m ok \033[0m ]"

echo `date "+%F %T"` $APPNAME started. >> "$LOGDIR"/$APPNAME-restart.log

return $RETVAL

}

stop() {

kpid="`ps x | grep "DappName=$APPNAME" | grep -v grep | awk '{print $1}'`"

#if [ ! -n "$kpid" ] && [ ! -f $LOCKFILE ] && [ ! -f $APPID ];then

if [ ! -n "$kpid" ];then

echo -e "$APPNAME is \033[31m not running \033[0m"

return 1

fi

count=-1

if [ -f $LOCKFILE ] && [ -f $APPID ]; then

read kpid < $APPPID

echo -n -e "$APPNAME stop " && echo -n -e "\033[s";

kill $kpid

read kpid < $APPPID

count=0;

let kwait=$SHUTDOWN_WAIT

until [ `ps --pid $kpid | grep -c $kpid` = '0' ] || [ $count -gt $kwait ]

do

echo -n -e ".";

sleep 1

let count=$count+1;

done

fi

if [ $count -gt $kwait ] && [ "$count" -eq "-1" ];then

echo -e "\033[u\033[K [\033[31m failed \033[0m]"

return -1

#kill -9 $kpid

fi

if [ $count -le $kwait ]; then

echo -e "\033[u\033[K [ \033[32m ok \033[0m ]"

fi

rm -f $LOCKFILE $APPPID

}

status() {

kpid="`ps x | grep "DappName=$APPNAME" | grep -v grep | awk '{print $1}'`"

if [ -n "$kpid" ];then

if [ -f $LOCKFILE ] && [ -f $APPID ];then

echo -e "$APPNAME is \033[32m running \033[0m"

else

echo -e "$APPNAME is \033[33m running \033[0m but lockfile or pidfile not ready"

fi

else

echo -e "$APPNAME is \033[31m not running \033[0m"

fi

}

info() {

echo $APPNAME

}

case "$1" in

'start')

start

;;

'stop')

stop

;;

'restart')

stop

start

;;

'status')

status

;;

'info')

info

;;

*)

echo "Usage: $0 {start|stop|restart|status|info}"

exit 1

;;

esac

exit 0

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值