#!/bin/bash ############### # DESCRIPTION: configure swappiness to 0 (= only swap when no memory is free) ############### set -euo pipefail PRECONFIG=$( ( grep -P '^[ \t]*vm.swappiness[ \t]*=' /etc/sysctl.conf || : ) |sed -r 's/.+=[ \t]*//g') PREACTIVE=$(cat /proc/sys/vm/swappiness) if [[ -z "${PRECONFIG+x}" ]] || [[ -z "${PRECONFIG// }" ]]; then PRECONFIG="unconfigured" echo 'vm.swappiness=0' >> /etc/sysctl.conf printf "/etc/sysctl.conf: 'vm.swappiness' changed from $PRECONFIG to 0.\n" elif [[ -n "${PRECONFIG##*[!0-9]*}" ]]; then if [[ $PRECONFIG -ne 0 ]]; then sed -i 's/^[ \t]*vm.swappiness[ \t]*=.*$/vm.swappiness=0/g' /etc/sysctl.conf printf "/etc/sysctl.conf: 'vm.swappiness' changed from $PRECONFIG to 0.\n" else printf "/etc/sysctl.conf: 'vm.swappiness' already set to 0.\n" fi else sed -i 's/^[ \t]*vm.swappiness[ \t]*=.*$/vm.swappiness=0/g' /etc/sysctl.conf printf "/etc/sysctl.conf: 'vm.swappiness' set to non numerical value \"$PRECONFIG\". Changed to 0.\n" fi if [[ -z "${PREACTIVE+x}" ]] || [[ -z "${PREACTIVE// }" ]]; then PREACTIVE="unconfigured" echo '0' >> /proc/sys/vm/swappiness printf "/proc/sys/vm/swappiness: changed from $PREACTIVE to 0.\n" elif [[ -n "${PREACTIVE##*[!0-9]*}" ]]; then if [[ $PREACTIVE -ne 0 ]]; then echo '0' >> /proc/sys/vm/swappiness printf "/proc/sys/vm/swappiness: changed from $PREACTIVE to 0.\n" else printf "/proc/sys/vm/swappiness: already set to 0.\n" fi else echo '0' >> /proc/sys/vm/swappiness printf "/etc/sysctl.conf: set to non numerical value \"$PREACTIVE\". Changed to 0.\n" fi