First pass in moving to debian
[discourse_docker.git] / scripts / mk_swapfile
1 #!/bin/bash -e
2 # This script adds a 1GB swapfile to the system
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; }
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
41 set_swappiness
42
43 SWAPFILE=$(get_new_swapfile)
44
45 umask 077
46 dd if=/dev/zero of=$SWAPFILE bs=1k count=$(($num_gb * 1024 * 1024)) conv=excl
47 mkswap $SWAPFILE
48 swapon $SWAPFILE
49 echo "$SWAPFILE swap swap auto 0 0" >> /etc/fstab
50
51 echo 1GiB swapfile successfully added