Skip to content

Instantly share code, notes, and snippets.

@Jekis
Last active August 17, 2024 01:06
Show Gist options
  • Save Jekis/6c8fe9dfb999fa76479058e2d769ee5c to your computer and use it in GitHub Desktop.
Save Jekis/6c8fe9dfb999fa76479058e2d769ee5c to your computer and use it in GitHub Desktop.
Empty swap. Clear swap. Move swap to RAM. Ubuntu.
#!/bin/bash
function echo_mem_stat () {
mem_total="$(free | grep 'Mem:' | awk '{print $2}')"
free_mem="$(free | grep 'Mem:' | awk '{print $7}')"
mem_percentage=$(($free_mem * 100 / $mem_total))
swap_total="$(free | grep 'Swap:' | awk '{print $2}')"
used_swap="$(free | grep 'Swap:' | awk '{print $3}')"
swap_percentage=$(($used_swap * 100 / $swap_total))
echo -e "Free memory:\t$((free_mem / 1024))/$((mem_total / 1024)) MB\t($mem_percentage%)"
echo -e "Used swap:\t$((used_swap / 1024))/$((swap_total / 1024)) MB\t($swap_percentage%)"
}
echo "Testing..."
echo_mem_stat
if [[ $used_swap -eq 0 ]]; then
echo "No swap is in use."
elif [[ $used_swap -lt $free_mem ]]; then
echo "Freeing swap..."
swapoff -a
swapon -a
echo_mem_stat
else
echo "Not enough free memory. Exiting."
exit 1
fi
@Longlv197
Copy link

Longlv197 commented Apr 23, 2023

hello, i want to run the script whenever an amount memory of swap correspond a specified amount. how can i solve this my case? can you help me? Assume that my memory swap's amount is 1900m, i want run the script automatically

@xeruf
Copy link

xeruf commented Apr 23, 2023

create a cronjob or use a watchdog like https://mmonit.com/monit/
or just shrink your swap lol

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment