img

Как автоматически очистить неиспользуемые временные файлы в Linux

Как удалить неиспользуемые файлы в Linux? В этой статье вы узнаете, как настроить таймер, управляющий временными файлами. В большинстве современных систем Linux для оптимальной обработки требуется большое количество временных файлов и каталогов. В совокупности они могут потреблять гигабайты дискового пространства, если их не чистить часто. Поэтому необходимо удалить старые файлы, чтобы они не занимали место на диске.

Как автоматически очистить неиспользуемые временные файлы в Linux

Некоторые пользователи или приложения будут использовать каталог /tmp для хранения временных данных, в то время как другие используют более специфичное для задачи расположение, такое как каталоги демонов и непостоянных (volatile) пользовательских файлов в /run.

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


Автоматическое очищение неиспользуемых временных файлов в Linux

В Red Hat Enterprise Linux 7 и новее включен новый инструмент systemd-tmpfiles. Этот инструмент предоставляет структурированный и настраиваемый метод управления временными каталогами и файлами.

Проверить запущенные сервисы можно командой:

$ systemctl status  systemd-tmpfiles-*
? systemd-tmpfiles-setup.service - Create Volatile Files and Directories
   Loaded: loaded (/usr/lib/systemd/system/systemd-tmpfiles-setup.service; static; vendor preset: disabled)
   Active: active (exited) since Mon 2020-02-10 08:27:50 EAT; 1 weeks 3 days ago
     Docs: man:tmpfiles.d(5)
           man:systemd-tmpfiles(8)
  Process: 794 ExecStart=/usr/bin/systemd-tmpfiles --create --remove --boot --exclude-prefix=/dev (code=exited, status=0/SUCCESS)
 Main PID: 794 (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/systemd-tmpfiles-setup.service

Feb 10 08:27:50 envoy-nginx.novalocal systemd[1]: Starting Create Volatile Files and Directories...
Feb 10 08:27:50 envoy-nginx.novalocal systemd[1]: Started Create Volatile Files and Directories.

? systemd-tmpfiles-setup-dev.service - Create Static Device Nodes in /dev
   Loaded: loaded (/usr/lib/systemd/system/systemd-tmpfiles-setup-dev.service; static; vendor preset: disabled)
   Active: active (exited) since Mon 2020-02-10 08:27:49 EAT; 1 weeks 3 days ago
     Docs: man:tmpfiles.d(5)
           man:systemd-tmpfiles(8)
  Process: 553 ExecStart=/usr/bin/systemd-tmpfiles --prefix=/dev --create --boot (code=exited, status=0/SUCCESS)
 Main PID: 553 (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/systemd-tmpfiles-setup-dev.service

Feb 10 08:27:49 envoy-nginx.novalocal systemd[1]: Starting Create Static Device Nodes in /dev...
Feb 10 08:27:49 envoy-nginx.novalocal systemd[1]: Started Create Static Device Nodes in /dev.

При запуске служебного модуля systemd-tmpfiles-setup он запускает команду systemd-tmpfiles –create –remove. Команда проверяет файлы конфигурации из:

  • /usr/lib/tmpfiles.d/.conf
  • /run/tmpfiles.d/.conf
  • /etc/tmpfiles.d/*.conf

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


Как временные файлы очищаются с помощью таймера Systemd

Блок таймера systemd, называемый systemd-tmpfiles-clean.timer, запускает службу systemd-tmpfiles-clean.service с регулярным интервалом, которая затем выполняет команду systemd-tmpfiles –clean.

В разделе [Timer] указывается, как часто следует запускать службу.

$ cat /usr/lib/systemd/system/systemd-tmpfiles-clean.timer
#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.

[Unit]
Description=Daily Cleanup of Temporary Directories
Documentation=man:tmpfiles.d(5) man:systemd-tmpfiles(8)

[Timer]
OnBootSec=15min
OnUnitActiveSec=1d	

В приведенном выше примере служба systemd-tmpfiles-clean.service будет запущена через 15 минут после загрузки системы. Любой другой запуск происходит через 24 часа после последнего запуска службы. Вы можете настроить значения по своему вкусу.

Если вы внесете изменения, убедитесь, что вы перезагрузили сервис.

sudo systemctl daemon-reload
sudo systemctl enable --now systemd-tmpfiles-clean.timer	

Как вручную очистить временные файлы

Давайте настроим systemd-tmpfiles для очистки каталога /mytmp. Это гарантирует, что в каталоге не будет файлов, которые не использовались последние 3 дня.

Вы можете скопировать пример файла конфигурации и обновить его - /usr/lib/tmpfiles.d/tmp.conf

Отредактируйте файл, как показано ниже.

$ sudo vim /etc/tmpfiles.d/mytmp.conf
See tmpfiles.d(5) for details
# Clear tmp directories separately, to make them easier to override
q /mytmp 1777 root root 3d	

Если вы хотите, чтобы каталог существовал с правильной принадлежностью, создайте конфигурацию, как показано ниже.

d /run/mytmp 0700 root root 60s

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

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

sudo systemd-tmpfiles --create /etc/tmpfiles.d/mytmp.conf

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

systemd-tmpfiles --clean /etc/tmpfiles.d/mytmp.conf
Ссылка
скопирована
Системное администрирование
Скидка 10%
Администратор Linux
Стань Linux администратором и сделай весомый шаг в сторону карьеры в DevOps. Самые важные знания от сертифицированного и практикующего тренера с 20 летним стажем
Получи бесплатный
вводный урок!
Пожалуйста, укажите корректный e-mail
отправили вводный урок на твой e-mail!
Получи все материалы в telegram и ускорь обучение!
img
Еще по теме:
img
Виртуализация серверов – это разделение одного физического сервера на несколько виртуальных серверов, каждый из которых работает
img
На базе нашего опыта и статей мы сделалем еще один полезный документ: руководство администратора по Linux/Unix системам. В докум
img
Удаленный доступ к системам давно стал необходимостью, и сейчас с трудом можно представить, что было бы, если бы мы не могли упр
img
Все мы любим компьютеры. Они могут делать столько удивительных вещей. За пару десятилетий компьютеры произвели самую настоящую р
img
Архитектуры х64 и х86 являются одними из наиболее широко используемых типов архитектур системы команд (АСК или ISA – Instr
img
Gzip – один из самых популярных алгоритмов сжатия, который позволяет сократить размер файла, но при этом сохранить исходный файл
Комментарии
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59