Using Bash script to create a swap file in Linux
If you are running a Linux system with limited memory, you may find that your system becomes slow or unresponsive when you have multiple applications running simultaneously.
One way to alleviate this issue is to create a swap file, which acts as a virtual memory extension of your RAM.
Full content of script
Copy and paste the following code into the terminal to create a Bash shell script:
#!/bin/bash
# Get total available memory in bytes
total_memory=$(grep MemTotal /proc/meminfo | awk '{print $2 * 1024}')
# Function to create and enable swap file
create_swap() {
local size=$1
local swapfile="/swapfile"
# Create swap file with the specified size
sudo fallocate -l "$size" "$swapfile"
# Set permissions
sudo chmod 600 "$swapfile"
# Make it a swap file
sudo mkswap "$swapfile"
# Enable swap
sudo swapon "$swapfile"
# Add swap file to /etc/fstab for auto-mount
echo "$swapfile none swap sw 0 0" | sudo tee -a /etc/fstab
echo "Swap file created and enabled successfully."
}
echo "Choose an option:"
echo "1. Double the system memory"
echo "2. Set custom size (in GB)"
echo "3. Exit"
read -p "Enter your choice (1/2/3): " choice
case $choice in
1)
# Double the system memory
swap_size=$((total_memory * 2))
;;
2)
read -p "Enter custom size in **GB**: " custom_size
# Convert to bytes
swap_size=$((custom_size * 1024 * 1024 * 1024))
;;
3)
echo "Exiting..."
exit 0
;;
*)
echo "Invalid option, exiting..."
exit 1
;;
esac
create_swap "$swap_size"Breakdown the script
In this post, we will go through the steps to create a swap file in Linux using a Bash shell script.
This script creates and enables a swap file on a Linux system. Here's a breakdown of the script:
- The first line specifies the interpreter to use (
/bin/bash). - The script uses the
grepandawkcommands to get the total amount of available memory in bytes from the/proc/meminfofile and stores the value in thetotal_memoryvariable. - The
create_swapfunction is defined, which takes in the size of the swap file as an argument. - Inside the
create_swapfunction, the script creates a swap file of the specified size using thefallocatecommand. - The script then sets the correct permissions on the swap file using the
chmodcommand. - Next, the script formats the swap file using the
mkswapcommand. - The script then enables the swap file using the
swaponcommand. - Finally, the script adds the swap file to
/etc/fstabso that it is automatically mounted on boot. - The script prompts the user to choose between three options: double the system memory, specify a custom size in GB, or exit the script.
- Depending on the user's choice, the script calculates the size of the swap file and passes it as an argument to the
create_swapfunction. - The script uses a
casestatement to handle the user's choice. If the user chooses option 1, the script doubles the system memory to determine the size of the swap file. If the user chooses option 2, the script prompts them to enter a custom size in GB and converts it to bytes. If the user chooses option 3, the script exits. If the user chooses an invalid option, the script outputs an error message and exits. - Finally, the script calls the
create_swapfunction with the calculated size of the swap file as an argument and outputs a message indicating that the swap file was created and enabled successfully.
Executable the script
Make the script executable by running the following command in the terminal:
chmod +x swap.shReplace swap.sh with the name of the file you saved the script in.Run the script
Run the script by entering the following command in the terminal:
./swap.shCongratulations:
Created a swap file in Linux. With a swap file, your system will be able to handle more applications and tasks without slowing down or becoming unresponsive.