shutdown-all-vms.sh init

main
superrob1500 2025-08-31 18:55:52 +02:00
parent 7f2f9fd998
commit 7996b029f2
1 changed files with 35 additions and 0 deletions

35
shutdown-all-vms.sh Normal file
View File

@ -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