В этой статье мы узнаем о важности управления системным кэшем в Linux и о том, как создать bash-скрипт, автоматизирующий процесс очистки этого кэша.
Эффективное управление памятью имеет решающее значение для поддержания оптимальной производительности системы, особенно на серверах с высокой рабочей нагрузкой.
Мы рассмотрим пошаговый метод очистки кэш-памяти, гарантирующий, что ваша система останется отзывчивой и эффективной.
Что такое системный кэш?
Системные кэши в Linux – это временные области хранения, в которых хранятся данные, которые могут быть использованы повторно, что ускоряет последующий доступ к этим данным.
Хотя кэширование полезно для производительности, со временем оно может занимать значительный объем памяти.
🌐 Как очистить или стереть кеш DNS на Linux
В некоторых случаях это может привести к снижению производительности, поскольку другие процессы борются за ограниченные ресурсы.
Ручная очистка кэша поможет освободить память и повысить скорость отклика системы.
Создание файла скрипта
Откройте терминал и с помощью команды nano создайте новый файл.
nano free_cache.sh
Написание скрипта для очистки кэша
Чтобы упростить процесс очистки системного кэша, мы будем использовать bash-скрипт, выполняющий следующие задачи:
- Зафиксировать текущее использование памяти.
- Выполнить серию команд для очистки системного кэша разных уровней.
- Сформировать отчет, сравнивающий использование памяти до и после очистки.
#!/bin/bash
# Function to purge caches
purging () {
sudo sync
sudo sh -c 'echo 1 > /proc/sys/vm/drop_caches'
sudo sync
sudo sh -c 'echo 1 > /proc/sys/vm/drop_caches'
sudo sync
sudo sh -c 'echo 1 > /proc/sys/vm/drop_caches'
sudo sync
sudo sh -c 'echo 2 > /proc/sys/vm/drop_caches'
sudo sync
sudo sh -c 'echo 2 > /proc/sys/vm/drop_caches'
sudo sync
sudo sh -c 'echo 2 > /proc/sys/vm/drop_caches'
sudo sync
sudo sh -c 'echo 3 > /proc/sys/vm/drop_caches'
sudo sync
sudo sh -c 'echo 3 > /proc/sys/vm/drop_caches'
sudo sync
sudo sh -c 'echo 3 > /proc/sys/vm/drop_caches'
}
# Function to generate the report
report() {
local ip_address=$(curl -s -4 ident.me)
echo -e "\n\n\n\nServer ${ip_address}'s cache Purging report:-\n-----Before Purging-----\n$(cat ~/old)\n\n-----After Purging-----\n$(free -wh)\nTimeStamp:- $(TZ='Asia/Kolkata' date)\n\n"
}
# Record the memory usage before purging
free -wh > ~/old
# Purge caches and generate the report
purging > /dev/null 2>&1 && report || echo -e "Kindly run with sudo rights\nExample:- sudo $0"
Сохраните файл и выйдите из редактора.
Пояснение к скрипту:
- Очистка кэша: Функция очистки очищает кэши путем записи в /proc/sys/vm/drop_caches. Это включает в себя три шага:
echo 1 очищает кэш страниц.
echo 2 очищает дентри и иноды.
echo 3 очищает кэш страниц, дентри и инодов. Команда sudo sync гарантирует, что все ожидающие записи на диск будут завершены перед очисткой. - Генерация отчета: Функция report получает публичный IP-адрес сервера и создает отчет, показывающий использование памяти до и после очистки кэша. Временная метка корректируется в соответствии с часовым поясом ‘Asia/Kolkata’.
- Запись использования памяти: скрипт фиксирует текущее использование памяти с помощью команды free -wh и сохраняет результаты в файл с именем old в домашнем каталоге.
Выполнение: скрипт пытается очистить кэш и сгенерировать отчет. Если скрипт не выполняется с правами sudo, он предлагает пользователю повторно запустить скрипт с соответствующими привилегиями.
Сделайте файл исполняемым
Измените права доступа к файлу, чтобы сделать его исполняемым, с помощью команды chmod.
chmod +x free_cache.sh
Запуск сценария
Запустите скрипт, выполнив следующую команду
sudo ./free_cache.sh
Система запустит процесс очистки кэша и создаст отчет об использовании памяти в системе до и после.
Заключение
В заключение следует отметить, что управление системным кэшем является важным аспектом поддержания производительности Linux-сервера.
Используя предоставленный bash-скрипт, вы можете автоматизировать процесс очистки системного кэша, тем самым освобождая память и повышая отзывчивость системы.
Регулярная очистка системного кэша поможет уменьшить проблемы с производительностью, вызванные нехваткой памяти, и обеспечит эффективную работу вашего сервера.
см. также:
- 🌐 Повышение производительности вашего сайта с помощью кэширования Nginx
- ⏏️ Как исправить чрезмерное использование оперативной памяти на Linux
- В чем разница между кешем и буфером в Linux?