shutdown-all-vms.sh init
parent
7f2f9fd998
commit
7996b029f2
|
|
@ -0,0 +1,35 @@
|
||||||
|
#!/bin/bash
|
||||||
|
# Script to try to gracefully shut down all running VMs on a Proxmox host, before then force stopping them.
|
||||||
|
|
||||||
|
# Running as a sub-script of apcupsd's doshutdown function to ensure that VMs are shut down before the host is powered off.
|
||||||
|
|
||||||
|
# Get a list of running VMs
|
||||||
|
vmlist=$(qm list | grep running | awk '{print $1}')
|
||||||
|
|
||||||
|
# Loop through the list and force shutdown each VM
|
||||||
|
for vmid in $vmlist
|
||||||
|
do
|
||||||
|
echo "Shutting down VM $vmid"
|
||||||
|
qm shutdown $vmid --timeout 150 # Try to force shutdown VMs with a 2.5 minute timeout
|
||||||
|
done
|
||||||
|
|
||||||
|
# Wait for 30 seconds to allow VMs to shut down
|
||||||
|
sleep 30
|
||||||
|
|
||||||
|
# Get a list of running VMs again
|
||||||
|
vmlist=$(qm list | grep running | awk '{print $1}')
|
||||||
|
|
||||||
|
# If there are still running VMs, print a warning
|
||||||
|
if [ -n "$vmlist" ]; then
|
||||||
|
echo "WARNING: The following VMs are still running:"
|
||||||
|
echo $vmlist
|
||||||
|
echo "Will attempt to kill them now"
|
||||||
|
for vmid in $vmlist
|
||||||
|
do
|
||||||
|
echo "Killing VM $vmid"
|
||||||
|
qm stop $vmid
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Exit with success
|
||||||
|
exit 0
|
||||||
Loading…
Reference in New Issue