You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
45 lines
1.2 KiB
45 lines
1.2 KiB
#!/usr/bin/env bash
|
|
|
|
DIR=$(readlink -e "$(dirname "$0")")
|
|
PROD_SERVER_JAR_NAME="server-prod.jar"
|
|
NEW_SERVER_JAR_NAME="out.jar"
|
|
|
|
PROD_EMITTER_JAR_NAME="JWTEmitter-prod.jar"
|
|
NEW_EMITTER_JAR_NAME="JWTEmitter.jar"
|
|
|
|
find_pid() {
|
|
ps -aux | tr -s " " | grep -E "\bjava -jar .*$1\b" | cut -d " " -f2
|
|
}
|
|
|
|
SERVER_PROD_PID=$(find_pid $PROD_SERVER_JAR_NAME)
|
|
EMITTER_PROD_PID=$(find_pid $PROD_EMITTER_JAR_NAME)
|
|
|
|
try_shutdown() {
|
|
if [ "$1" ]; then
|
|
#will cause the old server to gracefully shutdown
|
|
echo "shutting down old $2 version ..."
|
|
kill "$PROD_PID"
|
|
while [ ! "$(find_pid $2)" ]; do sleep 1; done #sleep until process ends
|
|
echo "$2 shut down"
|
|
fi
|
|
}
|
|
|
|
try_shutdown "$SERVER_PROD_PID" "$PROD_SERVER_JAR_NAME"
|
|
try_shutdown "$EMITTER_PROD_PID" "$PROD_EMITTER_JAR_NAME"
|
|
|
|
|
|
rm "$DIR/$PROD_SERVER_JAR_NAME"
|
|
mv "$DIR/$NEW_SERVER_JAR_NAME" "$DIR/$PROD_SERVER_JAR_NAME" || ls
|
|
mv "$DIR/$NEW_EMITTER_JAR_NAME" "$DIR/$PROD_EMITTER_JAR_NAME" || ls
|
|
|
|
SCREEN="basket"
|
|
|
|
# create screen if not exists
|
|
if ! screen -ls | grep -q -E "\b[0-9]+\.$SCREEN\b"; then
|
|
screen -S "$SCREEN" -d -m
|
|
fi
|
|
|
|
chmod 755 /run/screen
|
|
screen -d -r "$SCREEN" -X stuff $"$DIR/start.sh\n"
|
|
echo "server is started into $SCREEN screen."
|