52 lines
1.1 KiB
Bash
Executable File
52 lines
1.1 KiB
Bash
Executable File
#!/bin/bash -e
|
|
# This script adds a 1GB swapfile to the system
|
|
|
|
function do_err() {
|
|
code=$?
|
|
echo "Command failed with code $code: $BASH_COMMAND"
|
|
exit $code
|
|
|
|
}
|
|
trap do_err ERR
|
|
|
|
|
|
function set_swappiness() {
|
|
if ! grep -q '^vm.swappiness' /etc/sysctl.conf; then
|
|
echo -n 'Setting '
|
|
sysctl -w vm.swappiness=10
|
|
echo vm.swappiness = 10 >> /etc/sysctl.conf
|
|
fi
|
|
}
|
|
|
|
function get_new_swapfile() {
|
|
for i in `seq 0 99`; do
|
|
if [ ! -e /swapfile.$i ]; then
|
|
echo /swapfile.$i
|
|
return
|
|
fi
|
|
done
|
|
# Seriously? 100 swapfiles already exist?
|
|
echo "too many swapfiles"
|
|
exit 1
|
|
}
|
|
|
|
[ `id -u` -eq 0 ] || { echo "You must be root to run this script"; exit 1; }
|
|
|
|
# how big? default 1GB
|
|
declare -i num_gb
|
|
num_gb="${1-1}"
|
|
[ $num_gb -lt 1 ] && { echo "Please specify an integer >= 1"; exit 1; }
|
|
echo "Creating a ${num_gb}GB swapfile..."
|
|
|
|
set_swappiness
|
|
|
|
SWAPFILE=$(get_new_swapfile)
|
|
|
|
umask 077
|
|
dd if=/dev/zero of=$SWAPFILE bs=1k count=$(($num_gb * 1024)) conv=excl
|
|
mkswap $SWAPFILE
|
|
swapon $SWAPFILE
|
|
echo "$SWAPFILE swap swap auto 0 0" >> /etc/fstab
|
|
|
|
echo 1GiB swapfile successfully added
|