Commit | Line | Data |
---|---|---|
034f6554 | 1 | #!/bin/bash -e |
8b9d6bff | 2 | # This script adds a 1GB swapfile to the system |
034f6554 MB |
3 | |
4 | function do_err() { | |
5 | code=$? | |
6 | echo "Command failed with code $code: $BASH_COMMAND" | |
7 | exit $code | |
8 | ||
9 | } | |
10 | trap do_err ERR | |
11 | ||
12 | ||
13 | function set_swappiness() { | |
14 | if ! grep -q '^vm.swappiness' /etc/sysctl.conf; then | |
15 | echo -n 'Setting ' | |
16 | sysctl -w vm.swappiness=10 | |
17 | echo vm.swappiness = 10 >> /etc/sysctl.conf | |
18 | fi | |
19 | } | |
20 | ||
21 | function get_new_swapfile() { | |
22 | for i in `seq 0 99`; do | |
23 | if [ ! -e /swapfile.$i ]; then | |
24 | echo /swapfile.$i | |
25 | return | |
26 | fi | |
27 | done | |
28 | # Seriously? 100 swapfiles already exist? | |
29 | echo "too many swapfiles" | |
30 | exit 1 | |
31 | } | |
32 | ||
33 | [ `id -u` -eq 0 ] || { echo "You must be root to run this script"; exit 1; } | |
d6da9cd2 MB |
34 | |
35 | # how big? default 1GB | |
36 | declare -i num_gb | |
37 | num_gb="${1-1}" | |
38 | [ $num_gb -lt 1 ] && { echo "Please specify an integer >= 1"; exit 1; } | |
39 | echo "Creating a ${num_gb}GB swapfile..." | |
40 | ||
034f6554 MB |
41 | set_swappiness |
42 | ||
43 | SWAPFILE=$(get_new_swapfile) | |
44 | ||
45 | umask 077 | |
2bdc9167 | 46 | dd if=/dev/zero of=$SWAPFILE bs=1k count=$(($num_gb * 1024 * 1024)) conv=excl |
034f6554 MB |
47 | mkswap $SWAPFILE |
48 | swapon $SWAPFILE | |
49 | echo "$SWAPFILE swap swap auto 0 0" >> /etc/fstab | |
50 | ||
8b9d6bff | 51 | echo 1GiB swapfile successfully added |