From 6e1f5dceca7bd388deb90f2ecbd55f54f8ba33c7 Mon Sep 17 00:00:00 2001 From: mischa Date: Sun, 1 Nov 2020 09:40:08 +0100 Subject: [PATCH] added stopall script --- stopall.sh | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100755 stopall.sh diff --git a/stopall.sh b/stopall.sh new file mode 100755 index 0000000..1ef5875 --- /dev/null +++ b/stopall.sh @@ -0,0 +1,43 @@ +#!/bin/sh +# +# Copyright (c) 2019-2020 Mischa Peters +# +# Permission to use, copy, modify, and distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +# +SLEEP=300 +CPU=$(sysctl -n hw.ncpuonline) +CPU=$((${CPU}-2)) + +COUNTER=0 +for i in $(vmctl show | sort | awk '/ running / {print $9}' | xargs); do + VMS[${COUNTER}]=${i} + COUNTER=$((${COUNTER}+1)) +done + +echo -n "Are you sure? Press any key to continue... " +read input +echo -n "Are you really sure? Press any key to continue... " +read input + +CYCLES=$((${#VMS[*]}/${CPU}+1)) +echo "Stopping ${#VMS[*]} VMs on ${CPU} CPUs in ${CYCLES} cycle(s), waiting ${SLEEP} seconds after each cycle." + +COUNTER=0 +for i in ${VMS[*]}; do + COUNTER=$((${COUNTER}+1)) + vmctl stop ${i} + if [ $COUNTER -eq $CPU ]; then + sleep ${SLEEP} + COUNTER=0 + fi +done