Альтернативы для tmpreaper для очистки каталога /tmp

Вопрос или проблема

У нас есть набор из 5 серверов Ubuntu (текущая версия 22.04), которые используются для выполнения процессов сбора информации с экранов, и они генерируют много файлов в каталоге /tmp. Через пару недель они могут занять все доступное дисковое пространство на сервере, что приведет к его отключению.

Чтобы бороться с этим, я пытался использовать tmpreaper для очистки каталога /tmp на ежедневной основе, но по какой-то причине мне не удается действительно очистить файлы в каталоге. Он был установлен достаточно легко, и у меня есть конфигурационный файл (/etc/tmpreaper.conf) с такими настройками:

TMPREAPER_TIME=1d
TMPREAPER_PROTECT_EXTRA='/tmp/systemd-private*'
TMPREAPER_DIRS='/tmp/.'
TMPREAPER_DELAY='256'
TMPREAPER_ADDITIONALOPTIONS='--all'

Я проверил, что /etc/tmpreaper исполняемый. Чего мне может не хватать, чтобы файлы в /tmp не очищались?

И если я не могу заставить это работать, есть ли какие-нибудь хорошие альтернативы, кроме написания собственного скрипта bash?

Ответ или решение

Для решения задачи очистки директории /tmp на серверах Ubuntu версии 22.04, первым делом необходимо разобраться, почему не работает установленная вами утилита tmpreaper, а затем рассмотреть возможные альтернативы.

Теория (Theory)

tmpreaper — это утилита, предназначенная для удаления устаревших файлов в заданной директории, обычно используемой для очистки временных файлов в системах Linux. Вы уже прошли базовую настройку конфигурационного файла /etc/tmpreaper.conf, указав параметры, такие как время хранения файлов (TMPREAPER_TIME=1d), дополнительные директории для защиты (TMPREAPER_PROTECT_EXTRA='/tmp/systemd-private*'), настроив директории для очистки и дополнительные опции.

Есть несколько причин, по которым tmpreaper может не работать должным образом:

  1. Неправильные права доступа: Убедитесь, что у tmpreaper есть достаточные права для выполнения операции удаления файлов в /tmp.
  2. Планировщик задач: Проверьте, настроено ли выполнение tmpreaper через cron или другой планировщик задач. Поскольку вы используете параметр 1d, убедитесь, что задача запускается ежедневно.
  3. Логи и ошибки: Проверьте журналы системы, чтобы выяснить наличие ошибок при выполнении tmpreaper. Это может дать представление о том, где проблема.
  4. Файлы защищены от удаления: Возможно, файлы, которые вы ожидаете удалить, защищены по иным причинам, не предусмотренным вашими настройками.

Пример (Example)

Для более глубокой диагностики, попробуйте следующее:

  1. Вручную запустите tmpreaper с аналогичными параметрами и проверьте, какие ошибки выводятся:

    sudo /usr/sbin/tmpreaper --test 1d /tmp

    Параметр --test позволит понять, какие файлы будут удалены без непосредственного их удаления.

  2. Просмотрите журнал системных сообщений, который может содержать информацию о запуске tmpreaper:

    sudo journalctl -xe | grep tmpreaper
  3. Проверьте конфигурацию cron:

    sudo crontab -l

    Или проверьте соответствующий файл в /etc/cron.daily или /etc/cron.d/.

Применение (Application)

Если tmpreaper не подходит вам, рассмотрите следующие альтернативы:

  1. logrotate: Это инструмент, традиционно используемый для ротации журналов, но он также может быть настроен для удаления устаревших файлов в /tmp. Вот пример конфигурации:

    /tmp/* {
       daily
       missingok
       rotate 0
       maxage 1
       nocompress
    }

    Вместо ротации вы просто удаляете файлы старше одного дня.

  2. systemd-tmpfiles: Современные версии Ubuntu используют systemd, который предоставляет утилиту для управления временными файлами. Создайте конфигурационный файл, например, /etc/tmpfiles.d/tmp.conf:

    d /tmp 1777 root root 1d

    Он удалит файлы старше одного дня, сохраняя права доступа и владельцев.

  3. Скрипт Bash: Если вы предпочитаете писать собственные инструменты, то создайте cron-задание для исполнения скрипта:

    #!/bin/bash
    find /tmp -type f -mtime +1 -exec rm -f {} \;

    Добавьте его в cron:

    0 0 * * * /path/to/your/script.sh

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

Оцените материал
Добавить комментарий

Капча загружается...