В этой статье вы узнаете, как systemd timer, управляющий временными файлами.
В большинстве современных систем Linux для оптимальной работы требуется большое количество временных файлов и каталогов.
В совокупности они могут потреблять гигабайты дискового пространства, если их не чистить.
Поэтому необходимо очищать старые файлы, чтобы они не заполняли дисковое пространство.
Некоторые пользователи/приложения будут использовать каталог /tmp для хранения временных данных, в то время как другие используют более специфичное для задачи расположение, как например изменяемые каталоги в /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 Stati
- /usr/lib/tmpfiles.d/.conf
- /run/tmpfiles.d/.conf
- /etc/tmpfiles.d/*.conf
Как очистить временные файлы с помощью Systemd Timer
Модуль systemd timer с именем 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
Вы можете настроить значения по своему усмотрению.
Если вы вносите изменения, убедитесь, что вы перезагрузили сервис.
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
- tmpfiles.d (5)
- systemd-tmpfiles (8),
- systemd.timer (5)