📜 Bash скрипт для очистки системного кэша на Linux

Как очистить кэш скриптом

by itisgood

В этой статье мы узнаем о важности управления системным кэшем в 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-скрипт, вы можете автоматизировать процесс очистки системного кэша, тем самым освобождая память и повышая отзывчивость системы.

Регулярная очистка системного кэша поможет уменьшить проблемы с производительностью, вызванные нехваткой памяти, и обеспечит эффективную работу вашего сервера.

см. также:

 

 

You may also like

Leave a Comment