From 69140e16449e32746cf9309d7a87b01239542f55 Mon Sep 17 00:00:00 2001 From: colin Date: Fri, 13 Sep 2024 16:43:10 -0400 Subject: [PATCH] Update swap.sh --- swap.sh | 78 ++++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 49 insertions(+), 29 deletions(-) diff --git a/swap.sh b/swap.sh index 400d16b..117ff33 100644 --- a/swap.sh +++ b/swap.sh @@ -1,40 +1,60 @@ #!/bin/bash -# Detect the main disk by finding the partition mounted on root ('/') -main_disk=$(df / | tail -1 | awk '{print $1}') -mount_point=$(df / | tail -1 | awk '{print $6}') +# Function to create swap file +create_swapfile() { + # Detect the main disk by finding the partition mounted on root ('/') + mount_point=$(df / | tail -1 | awk '{print $6}') -# Get available space on the partition in GB -available_space=$(df -BG $mount_point | tail -1 | awk '{print $4}' | sed 's/G//') + # Get available space on the partition in GB + available_space=$(df -BG $mount_point | tail -1 | awk '{print $4}' | sed 's/G//') -# Calculate 5% of the available space, and ensure it's within the limits (max 30GB) -swap_size=$((available_space * 5 / 100)) -if [ $swap_size -gt 30 ]; then - swap_size=30 -elif [ $swap_size -lt 1 ]; then - echo "Not enough disk space to create a swap file." - exit 1 + # Calculate 5% of the available space, and ensure it's within the limits (max 30GB) + swap_size=$((available_space * 5 / 100)) + if [ $swap_size -gt 30 ]; then + swap_size=30 + elif [ $swap_size -lt 1 ]; then + echo "Not enough disk space to create a swap file." + exit 1 + fi + + echo "Creating a ${swap_size}GB swap file at /swapfile..." + + # Remove existing swapfile if it exists + if [ -f /swapfile ]; then + sudo swapoff /swapfile + sudo rm /swapfile + echo "Existing swapfile removed." + fi + + # Create the swap file + sudo fallocate -l ${swap_size}G /swapfile + sudo chmod 600 /swapfile + sudo mkswap /swapfile + sudo swapon /swapfile + + echo "Swap file of ${swap_size}GB created and activated." +} + +# Function to persist the swap file across reboots +persist_swapfile() { + echo "/swapfile none swap sw 0 0" | sudo tee -a /etc/fstab + echo "Swap file added to /etc/fstab." +} + +# Check if --persist flag is passed +persist=false +if [ "$1" == "--persist" ]; then + persist=true fi -echo "Creating a ${swap_size}GB swap file at /swapfile..." +# Main script execution +create_swapfile -# Create the swap file -sudo fallocate -l ${swap_size}G /swapfile -sudo chmod 600 /swapfile -sudo mkswap /swapfile -sudo swapon /swapfile - -echo "Swap file of ${swap_size}GB created and activated." - -# Ask if the user wants to persist the swap after reboot -read -p "Do you want to persist the swap file after reboot? (y/n): " persist_swap - -if [[ "$persist_swap" == "y" || "$persist_swap" == "Y" ]]; then - echo "/swapfile none swap sw 0 0" | sudo tee -a /etc/fstab - echo "Swap file added to /etc/fstab." +if [ "$persist" = true ]; then + persist_swapfile else - echo "Swap file will not persist after reboot." + echo "Swap file will not persist after reboot." fi -# Show swap summary +# Show current swap status sudo swapon --show