sh скрипт автоматической очистки SWAP раздела
- Linux /
- ISPmanager + Ubuntu
- 24.04.2013
- job
- 8071
Продолжаю оптимизацию и шлифовку нашего 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
-
Святослав Кукушкин