天天看點

linux 重新開機java_Linux上java程式啟動、關閉、重新開機shell腳本

server.sh

#!/bin/bash

cd `dirname $0`

BIN_DIR=`pwd`

cd ..

DEPLOY_DIR=`pwd`

JAR_NAME="manage.jar"

LOGS_FILE=`pwd`/logs/app-info.log

SERVER_NAME="manage"

SERVER_PORT=8889

JAVA_MEM_OPTS=" -server -Xms1024m -Xmx1024m -XX:PermSize=128m -XX:SurvivorRatio=2 -XX:+UseParallelGC "

PIDS=0

if [ "$1" = "start" ]; then

PIDS=`ps  --no-heading -C java -f --width 1000 | grep "$JAR_NAME" |awk '{print $2}'`

if [ -n "$PIDS" ]; then

echo "ERROR: The $SERVER_NAME already started!"

echo "PID: $PIDS"

exit 1

fi

if [ -n "$SERVER_PORT" ]; then

SERVER_PORT_COUNT=`netstat -tln | grep $SERVER_PORT | wc -l`

if [ $SERVER_PORT_COUNT -gt 0 ]; then

echo "ERROR: The $SERVER_NAME port $SERVER_PORT already used!"

exit 1

fi

fi

echo -e "Starting the $SERVER_NAME ...\c"

nohup java $JAVA_MEM_OPTS -jar $DEPLOY_DIR/$JAR_NAME >> $LOGS_FILE 2>&1 &

COUNT=0

while [ $COUNT -lt 1 ]; do

echo -e ".\c"

sleep 1

if [ -n "$SERVER_PORT" ]; then

COUNT=`echo status | nc 127.0.0.1 $SERVER_PORT -i 1 | grep -c OK`

else

COUNT=`ps  --no-heading -C java -f --width 1000 | grep "$JAR_NAME" | awk '{print $2}' | wc -l`

fi

if [ $COUNT -gt 0 ]; then

break

fi

done

echo "OK!"

PIDS=`ps  --no-heading -C java -f --width 1000 | grep "$JAR_NAME" | awk '{print $2}'`

echo "PID: $PIDS"

elif [ "$1" = "stop" ]; then

PIDS=`ps  --no-heading -C java -f --width 1000 | grep "$JAR_NAME" |awk '{print $2}'`

if [ -z "$PIDS" ]; then

echo "ERROR: The $SERVER_NAME does not started!"

exit 1

fi

echo -e "Stopping the $SERVER_NAME ...\c"

for PID in $PIDS ; do

kill $PID > /dev/null 2>&1

done

COUNT=0

while [ $COUNT -lt 1 ]; do

echo -e ".\c"

sleep 1

COUNT=1

for PID in $PIDS ; do

PID_EXIST=`ps --no-heading -p $PID`

if [ -n "$PID_EXIST" ]; then

COUNT=0

break

fi

done

done

echo "OK!"

echo "PID: $PIDS"

elif [ "$1" = "restart" ]; then

PIDS=`ps  --no-heading -C java -f --width 1000 | grep "$JAR_NAME" |awk '{print $2}'`

echo -e "Stopping the $SERVER_NAME ...\c"

for PID in $PIDS ; do

kill $PID > /dev/null 2>&1

done

COUNT=0

while [ $COUNT -lt 1 ]; do

echo -e ".\c"

sleep 1

COUNT=1

for PID in $PIDS ; do

PID_EXIST=`ps --no-heading -p $PID`

if [ -n "$PID_EXIST" ]; then

COUNT=0

break

fi

done

done

echo -e "Starting the $SERVER_NAME ...\c"

nohup java $JAVA_MEM_OPTS -jar $DEPLOY_DIR/$JAR_NAME >> $LOGS_FILE 2>&1 &

COUNT=0

while [ $COUNT -lt 1 ]; do

echo -e ".\c"

sleep 1

if [ -n "$SERVER_PORT" ]; then

COUNT=`echo status | nc 127.0.0.1 $SERVER_PORT -i 1 | grep -c OK`

else

COUNT=`ps  --no-heading -C java -f --width 1000 | grep "$JAR_NAME" | awk '{print $2}' | wc -l`

fi

if [ $COUNT -gt 0 ]; then

break

fi

done

echo "OK!"

PIDS=`ps  --no-heading -C java -f --width 1000 | grep "$JAR_NAME" | awk '{print $2}'`

echo "PID: $PIDS"

else

echo "ERROR: Please input argument: start or stop or restart"

exit 1

fi

啟動指令:./server.sh start

關閉指令:./server.sh stop

重新開機指令:./server.sh restart