sh скрипт автоматической очистки SWAP раздела

Продолжаю оптимизацию и шлифовку нашего KVM VPS сервера, пока довольствуемся 1Gb оперативки, всем хватает, расширяться в ближайшее время не планируем (пока крутится 20 средне- и низко-нагруженных сайтов). Но бывает память свопится, однажды засвопив и висит колом, а очищаться сам не хочет, что напрягает. Я наверное педант, постоянно мозолит глаз на графике swap диаграмма. С чего я и задался вопросом автоматической очистки раздела.

Есть две команды:

# Перемещает Своп обратно в память и выключает раздел.
swapoff -a

и

# Подключает Своп раздел
swapon -a

Хочу напомнить, что я все же программист, а не системный администратор. И мозг всегда заточен на оптимизацию работы кода\скрипта. К чему это я виду? К тому что нет смысла выключать, включать swap раздел без необходимости. Отсюда выросла идея выполнять команды только при имеющемся свопе. И так, написал вот такой вот скриптик. Который проверяет общий размер свопа и на сколько он свободен, сравнивает эти две переменные и в случае положительной разницы выполняет очистку свопа. Напомню, я использую связку Ubuntu 12.04 + ISPmanager.

#!/bin/sh

SWAP_TOTAL=`awk '/SwapTotal/ {print $2}' /proc/meminfo`
SWAP_FREE=`awk '/SwapFree/ {print $2}' /proc/meminfo`

if [ $SWAP_TOTAL = $SWAP_FREE ] ; then
	echo "Swap Clean"
	exit 0
fi

CMD_OFF=`swapoff -a`
CMD_ON=`swapon -a`

if [ -n "$CMD_OFF" ] ; then
	eval $CMD_OFF
fi
if [ -n "$CMD_ON" ] ; then
	eval $CMD_ON
fi

echo "Swap Cleaned"

Кладем его к примеру в /home/script.sh и даем права на выполнение

chmod +x /home/script.sh

Добавляем задачу в Cron панели управления ISPmanager под управлением root пользователя, с частотой запуска по обстановке, я выставил ежечасно.

sudo /home/script.sh

Наслаждаемся! Сисадминов с удовольствием выслушаю, может я что и не то делаю ))) Но пока вот такое решение и ничего конкретного поисковики не выдают ))).

P.S. Я не знаю как на других системах обзывается статистика свопа, но на Ubuntu это SwapTotal и SwapFree. В любом случае править можно под себя проверив названия командой

cat /proc/meminfo
  • смысл в двух выполнениях очистки swap? `` выполняют команду и возвращают результат, проверки вообще не нужны вконце