..

How to Allocate swap in GNU/Linux?

#!/usr/bin/env bash
set -euo pipefail
SIZE="1G" # To be determined by the user: either B or G
SWAP_ADDR="/swapfile"
FSTAB="/etc/fstab"

if [ ${UID} -ne 0 ]; then
    echo "Must run as root" >&2
    exit 1
fi

if [ -e "${SWAP_ADDR}" ]; then
    echo "Swapfile already exists" >&2
    exit 1
fi

echo "Allocating ${SIZE} at ${SWAP_ADDR}..."
fallocate -l "${SIZE}" "${SWAP_ADDR}"
echo "Setting permissions..."
chmod 600 "${SWAP_ADDR}"

echo "Enabling swap..."
mkswap "${SWAP_ADDR}"
swapon "${SWAP_ADDR}"

if grep -qF "${SWAP_ADDR}" "$FSTAB"; then
    echo "Entry already present"
else
    echo "Adding the entry to ${FSTAB}"
    printf "%s\t\tnone\t\tswap\t\trkswap\t0\t0\n" "$SWAP_ADDR" >> "$FSTAB"
    echo "Added."
fi

echo "Current status:"
swapon --show