Thank you for reading this post, don't forget to subscribe!
В большинстве современных систем Linux для оптимальной работы требуется большое количество временных файлов и каталогов.
В совокупности они могут потреблять гигабайты дискового пространства, если их не чистить.
Поэтому необходимо очищать старые файлы, чтобы они не заполняли дисковое пространство.
Некоторые пользователи/приложения будут использовать каталог /tmp для хранения временных данных, в то время как другие используют более специфичное для задачи расположение, как например изменяемые каталоги в /run.
Изменяемые означает, что файлы существуют только в памяти.
Если система перезагружается или происходит сбой питания, все содержимое энергозависимого хранилища будет удалено.
Как автоматически очищать неиспользуемые временные файлы в Linux
В Red Hat Enterprise Linux 7 и новее включен новый инструмент под названием systemd-tmpfiles.
Этот инструмент предоставляет структурированный и настраиваемый метод для управления временными каталогами и файлами.
Вы можете проверить запущена ли служба с помощью команды:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
$ 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].
Смотрите пример, показанный ниже.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
$ 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 |
Вы можете настроить значения по своему усмотрению.
Если вы вносите изменения, убедитесь, что вы перезагрузили сервис.
1 2 |
sudo systemctl daemon-reload sudo systemctl enable --now systemd-tmpfiles-clean.timer |
Как очистить временные файлы вручную
Давайте настроим systemd-tmpfiles для очистки каталога /mytmp.
Это обеспечит отсутствие в каталоге файлов, которые не использовались в течение последних 3 дней.
Вы можете скопировать пример файла конфигурации и обновить его — /usr/lib/tmpfiles.d/tmp.conf
Отредактируйте файл как показано ниже.
1 2 3 4 |
$ 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 |
1 |
d /run/mytmp 0700 root root 60s |
Любой файл в этом каталоге, который остается неиспользованным в течение последних 60 секунд, должен быть очищен.
После создания файла используйте следующую команду, чтобы убедиться, что файл содержит соответствующую конфигурацию.
1 |
sudo systemd-tmpfiles --create /etc/tmpfiles.d/mytmp.conf |
1 |
systemd-tmpfiles --clean /etc/tmpfiles.d/mytmp.conf |
- tmpfiles.d (5)
- systemd-tmpfiles (8),
- systemd.timer (5)