summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormischa <mischa@rx.high5.nl>2020-11-01 09:40:08 +0100
committermischa <mischa@rx.high5.nl>2020-11-01 09:40:08 +0100
commit6e1f5dceca7bd388deb90f2ecbd55f54f8ba33c7 (patch)
tree7a3195317dada3b072d3ddda94077017a096c29f
parentd9aaef5b7c33449fbc22b435f6acf394e8c18ca7 (diff)
added stopall script
-rwxr-xr-xstopall.sh43
1 files changed, 43 insertions, 0 deletions
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 <mischa @ openbsd.amsterdam>
+#
+# 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