123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156 |
- #!/bin/bash
- CMD=
- STAT=
- PID=
- WAITS=0
- APP_NAME='*.jar'
- JVM_STAT='vm/stat'
- JVM_DONE='vm/done'
- OPT_TAIL="N"
- OPT_VALID="Y"
- OPT_ACTIVE=
- OPT_DEBUG=
- if [ -n "$1" ]; then
- CMD=$1
- else
- echo '-pub error: 启动命令不能为空,可选命令:start | restart | stop'
- fi
- for i in "$@"; do
- if [ "$i" = "-tail" ]; then
- OPT_TAIL="Y"
- fi
- if [ "$i" = "-nv" ]; then
- OPT_VALID="N"
- fi
- if [[ $i = --active* ]]; then
- _TEMP=$i
- OPT_ACTIVE="--spring.profiles.active=${_TEMP#*=}"
- fi
- if [[ $i = --debug* ]]; then
- _TEMP=$i
- OPT_DEBUG="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=${_TEMP#*=}"
- fi
- done
- JAVA_OPTS="nohup java"
- JAVA_OPTS="$JAVA_OPTS $OPT_DEBUG"
- JAVA_OPTS="$JAVA_OPTS -jar $APP_NAME"
- JAVA_OPTS="$JAVA_OPTS $OPT_ACTIVE"
- JAVA_OPTS="$JAVA_OPTS > log.rt 2>&1 &"
- function start()
- {
- echo "JAVA_OPTS: $JAVA_OPTS"
- eval $JAVA_OPTS
- echo "应用程序($APP_NAME)启动完成。"
-
- if [ "$OPT_TAIL" = "Y" ]; then
- tail -f log.rt
- fi
-
- if [ "$OPT_VALID" = "Y" ]; then
- while [ ! -f $JVM_DONE ]; do
- echo "正在检测程序是否启动完成($WAITS)"
- sleep 1
- WAITS=$((WAITS + 1))
- done
-
- STAT=$(cat $JVM_STAT | tail -n +1 | head -n 1)
- if [ $STAT -eq 1 ]; then
- echo "服务启动成功($STAT)"
- else
- MSG=$(cat $JVM_STAT | tail -n +2 | head -n 1)
- echo "服务启动失败($STAT), 错误信息: $MSG"
- fi
- fi
- }
- function stop()
- {
- PID=$(ps aux | grep java | grep $APP_NAME | awk '{print $2}')
- if [ -n "$PID" ]; then
- kill -9 $PID
- echo "终止进程($PID)"
- else
- echo "未检测出需要终止的进程"
- fi
- }
- function restart()
- {
- stop
- start
- }
- case "$CMD" in
- "start") start
- ;;
- "stop") stop
- ;;
- "restart") restart
- ;;
- "ps") ps -ef | grep $APP_NAME
- ;;
- *) echo "未知命令($CMD)"
- ;;
- esac
|