#!/usr/bin/env bash "$APP" onearg "$@" "$APP" exist "$1" echo "[$APP_NAME] Stopping '$1' ..." source "$APP" service_env "$1" if [ "$SERVICE_STOP" = "0" ]; then exit 0 fi set +e ps -u "$SERVICE_USER" if ! [ "$?" = "0" ]; then echo "Service already stopped." exit 0 fi if [ "$SERVICE_SCREEN" = "1" ] && ! [ "$SERVICE_SCREEN_EXIT_COMMAND" = "" ]; then echo "[$APP_NAME] * Sending backspaces to screen ..." if [ "$SERVICE_SCREEN_EXIT_BACKSPACE" = "1" ]; then screen -S "$SERVICE_SCREEN_NAME" -X stuff "" screen -S "$SERVICE_SCREEN_NAME" -X stuff "" screen -S "$SERVICE_SCREEN_NAME" -X stuff "" screen -S "$SERVICE_SCREEN_NAME" -X stuff "" screen -S "$SERVICE_SCREEN_NAME" -X stuff "" screen -S "$SERVICE_SCREEN_NAME" -X stuff "" screen -S "$SERVICE_SCREEN_NAME" -X stuff "" screen -S "$SERVICE_SCREEN_NAME" -X stuff "" screen -S "$SERVICE_SCREEN_NAME" -X stuff "" screen -S "$SERVICE_SCREEN_NAME" -X stuff "" fi echo "[$APP_NAME] * Sending exit command to screen ..." screen -S "$SERVICE_SCREEN_NAME" -X stuff "$SERVICE_SCREEN_EXIT_COMMAND^M" echo "[$APP_NAME] * Waiting for service to end ..." "$APP" user_wait "$SERVICE_USER" "$SERVICE_TIMEOUT_SCREEN_EXIT" if [ "$?" = "0" ]; then exit 0 fi fi echo "[$APP_NAME] * Terminating service ..." killall -15 -u "$SERVICE_USER" echo "[$APP_NAME] * Waiting for service to end ..." "$APP" user_wait "$SERVICE_USER" "$SERVICE_TIMEOUT_TERMINATE" if [ "$?" = "0" ]; then exit 0 fi echo "[$APP_NAME] * Killing service." killall -9 -u "$SERVICE_USER" exit 0