Skip to content

Instantly share code, notes, and snippets.

@jimmoffet
Last active November 3, 2023 21:51
Show Gist options
  • Select an option

  • Save jimmoffet/b2d4ff9d3dece921eb85ae27dbdb03d1 to your computer and use it in GitHub Desktop.

Select an option

Save jimmoffet/b2d4ff9d3dece921eb85ae27dbdb03d1 to your computer and use it in GitHub Desktop.
Shut down a GCP instance after N minutes below 10% cpu
#!/bin/bash
# Add to instance metadata with `gcloud compute instances add-metadata \
# instance-name --metadata-from-file startup-script=idle-shutdown.sh` and reboot
# NOTE: requires `bc`, eg, sudo apt-get install bc
# Modified from https://stackoverflow.com/questions/30556920/how-can-i-automatically-kill-idle-gce-instances-based-on-cpu-usage
threshold=0.05
count=0
wait_minutes=30
while true
do
load=$(uptime | sed -e 's/.*load average: //g' | awk '{ print $1 }') # 1-minute average load
load="${load//,}" # remove trailing comma
res=$(echo $load'<'$threshold | bc -l)
if (( $res ))
then
echo "Idling.."
((count+=1))
fi
echo "Idle minutes count = $count"
if (( count>wait_minutes ))
then
echo Shutting down
# wait a little bit more before actually pulling the plug
sleep 3
sudo poweroff
fi
sleep 60
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment