From f2e621cb4807edfce712bc4165546685080bd5b9 Mon Sep 17 00:00:00 2001 From: root Date: Wed, 3 Apr 2024 14:58:00 +0000 Subject: [PATCH] Added threaded stop script --- bin/stop | 51 ++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 44 insertions(+), 7 deletions(-) diff --git a/bin/stop b/bin/stop index 5b56e8f..5a3e3fa 100755 --- a/bin/stop +++ b/bin/stop @@ -9,10 +9,18 @@ usage() { exit 2 } stopservice() { - echo "* Stopping $SERVICE.." - cd /federated/apps/$SERVICE && docker-compose -f docker-compose.yml -p $SERVICE down + echo -ne "* Stopping $1.." + spin & + SPINPID=$! + + cd /federated/apps/$1 && docker-compose -f docker-compose.yml -p $1 down &> /dev/null + [ $? -ne 0 ] && echo -ne "\nThere was a problem stopping service /federated/apps/$1\nCheck the output of 'docker logs $1' while stopping or run\ndocker-compose -f /federated/apps/$1/docker-compose.yml -p $1 down\n\n" + + disown $SPINPID &> /dev/null + kill -9 $SPINPID &> /dev/null + echo "done." } -stopservice_all() { +stopservice_all_old() { for i in "${SERVICES[@]}"; do # If app isn't installed then skip [ ! -d "/federated/apps/$i" ] && echo "* $i not installed, skipping." && continue @@ -21,14 +29,43 @@ stopservice_all() { cd /federated/apps/$i && docker-compose -f docker-compose.yml -p $i down done } +stopservice_all() { + echo "* Stopping $i." + cd /federated/apps/$1 && docker-compose -f docker-compose.yml -p $1 down &> /dev/null + [ $? -ne 0 ] && echo -ne "\nThere was a problem stopping service /federated/apps/$1\nCheck the output of 'docker logs $1' while stopping or run\ndocker-compose -f /federated/apps/$1/docker-compose.yml -p $1 down\n\n" +} -#get_installedapps -[ $# != 1 ] && usage +[[ $# -ne 1 ]] && usage SERVICE=$1 -[ "$SERVICE" = "all" ] && stopservice_all +if [ "$SERVICE" = "all" ]; then + for i in "${SERVICES[@]}"; do + # If app isn't installed then skip + [ ! -d "/federated/apps/$i" ] && echo "* $i not installed, skipping." && continue + + # If app is already stopped then skip + [ ! "$(docker ps -f "name=$i" -f "status=running" -q)" ] && echo "* $i is already stopped." && continue + + # If app is jitsi then check status of jitsi_web_1 since jitsi is named different + [ "$i" = "jitsi" ] && [ ! "$(docker ps -f "name=jitsi_web_1" -f "status=running" -q)" ] && echo "* $i is already stopped." && continue + + # Run thread in stopservice_all function + stopservice_all "$i" & + done + + wait + exit 0 +fi + if printf '%s\0' "${SERVICES[@]}" | grep -Fxqz -- "$SERVICE"; then - stopservice + # If app is already stopped then skip + [ ! "$(docker ps -f "name=$SERVICE" -f "status=running" -q)" ] && echo "* $SERVICE is already stopped." && exit 2 + + # If app is jitsi then check status of jitsi_web_1 since jitsi is named different + [ "$SERVICE" = "jitsi" ] && [ ! "$(docker ps -f "name=jitsi_web_1" -f "status=running" -q)" ] && echo "* $SERVICE is already stopped." && exit 2 + + # Stop service + stopservice "$SERVICE" else usage fi