#!/usr/bin/env bash DIR=$(readlink -e "$(dirname "$0")") PROD_SERVER_JAR_NAME="server-prod.jar" NEW_SERVER_JAR_NAME="server-all.jar" prod_pid() { ps -aux | tr -s " " | grep -E "\bjava -jar $PROD_SERVER_JAR_NAME\b" | cut -d " " -f2 } PROD_PID=$(prod_pid) #if $PROD_PID is not empty but isn't a number, something went wrong if [ "$PROD_PID" ] && ! echo "$PROD_PID" | grep -E -q "^[0-9]+$"; then echo "error, unable to retrieve old server pid: $PROD_PID" >&2 exit 2 fi if [ "$PROD_PID" ]; then #will cause the old server to gracefully shutdown echo "shutting down old server version ..." kill "$PROD_PID" while [ ! "$(prod_pid)" ]; do sleep 1; done #sleep until process ends fi rm "$DIR/$PROD_SERVER_JAR_NAME" mv "$DIR/$NEW_SERVER_JAR_NAME" "$DIR/$PROD_SERVER_JAR_NAME" 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 screen -d -r "$SCREEN" -X stuff $"$DIR/start.sh\n" echo "server is started into $SCREEN screen."