Created
February 24, 2024 18:10
-
-
Save anurag-roy/5dcb9bd5f54de783d39dd9bf1c74a088 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# Manual zsysctl gc | |
clear | |
garbagespace= | |
kernelscount= | |
kernelstrim= | |
check () { | |
garbagespace=$(zpool list | awk -F '[% ]+' '/bpool/ {print $8}') | |
kernelscount=$(zsysctl show --full | grep -c -C 2 Kernel) | |
clear | |
echo "Your BPOOL is $garbagespace% full." | |
echo "You have $kernelscount Kernel Snapshots" | |
echo "" | |
} | |
empty () { | |
garbagespace=$(zpool list | awk -F '[% ]+' '/bpool/ {print $8}') | |
kernelscount=$(zsysctl show --full | grep -c -C 2 Kernel) | |
if [[ $garbagespace -gt 50 ]] | |
then | |
echo "How many snapshots would you like to trim?" | |
echo "0 - $kernelscount" | |
while :; do | |
read kernelstrim | |
[[ $kernelstrim =~ ^[0-9]+$ ]] || { echo "Enter a valid number!"; continue; } | |
if ((kernelstrim >= 0 && kernelstrim <= kernelscount)); then | |
break | |
else | |
echo "Number out of range, try again!" | |
fi | |
done | |
if [[ $kernelstrim -gt 0 ]] | |
then | |
clear | |
echo "" | |
echo "Collecting Garbage" | |
echo "" | |
zsysctl show --full | grep -C 2 Kernel | grep bpool | tac | grep bpool -m $kernelstrim | awk -F '[_ ]+' '/bpool/ {print $5}'| xargs -n1 zsysctl state remove -s | |
echo "" | |
echo "Done." | |
echo "" | |
elif [[ $kernelstrim = 0 ]] | |
then | |
clear | |
echo "" | |
echo "Cancelled" >&2 | |
echo "" | |
fi | |
else | |
clear | |
echo "BPOOL is less than 50% full" | |
echo "Do you still want to trim snapshots?" | |
read trimanswer | |
if [[ $trimanswer = yes ]] || [[ $trimanswer = y ]] | |
then | |
clear | |
echo "How many snapshots would you like to trim?" | |
echo "0 - $kernelscount" | |
while :; do | |
read kernelstrim | |
[[ $kernelstrim =~ ^[0-9]+$ ]] || { echo "Enter a valid number!"; continue; } | |
if ((kernelstrim >= 0 && kernelstrim <= kernelscount)); then | |
break | |
else | |
echo "Number out of range, try again!" | |
fi | |
done | |
if [[ $kernelstrim -gt 0 ]] | |
then | |
clear | |
echo "" | |
echo "Collecting Garbage" | |
echo "" | |
zsysctl show --full | grep -C 2 Kernel | grep bpool | tac | grep bpool -m $kernelstrim | awk -F '[_ ]+' '/bpool/ {print $5}'| xargs -n1 zsysctl state remove -s | |
echo "" | |
echo "Done." | |
echo "" | |
elif [[ $kernelstrim = 0 ]] | |
then | |
clear | |
echo "" | |
echo "Cancelled" | |
echo "" | |
fi | |
fi | |
fi | |
} | |
while true; do | |
options=("Check Garbage" "Empty Garbage" "Quit") | |
echo "Choose an option: " | |
select opt in "${options[@]}"; do | |
case $REPLY in | |
1) check; break ;; | |
2) empty; break ;; | |
3) break 2 ;; | |
*) echo "Invalid Option!" >&2 | |
esac | |
done | |
done | |
echo "Have a nice day!" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment