- ИТ База знаний
- Полезно
- Навигация
- Серверные решения
- Телефония
- Корпоративные сети
- Как автоматически очистить неиспользуемые временные файлы в Linux
- Автоматическое очищение неиспользуемых временных файлов в Linux
- Как временные файлы очищаются с помощью таймера Systemd
- Как вручную очистить временные файлы
- Как безопасно очистить папку tmp в Linux
- 7 ответов 7
- edit3: Но что, если я хотел бы автоматизировать весь процесс?
- Cleaning up temporary files astra linux
ИТ База знаний
Курс по Asterisk
Полезно
— Узнать IP — адрес компьютера в интернете
— Онлайн генератор устойчивых паролей
— Онлайн калькулятор подсетей
— Калькулятор инсталляции IP — АТС Asterisk
— Руководство администратора FreePBX на русском языке
— Руководство администратора Cisco UCM/CME на русском языке
— Руководство администратора по Linux/Unix
Навигация
Серверные решения
Телефония
FreePBX и Asterisk
Настройка программных телефонов
Корпоративные сети
Протоколы и стандарты
Как автоматически очистить неиспользуемые временные файлы в Linux
4 минуты чтения
Как удалить неиспользуемые файлы в Linux? В этой статье вы узнаете, как настроить таймер, управляющий временными файлами. В большинстве современных систем Linux для оптимальной обработки требуется большое количество временных файлов и каталогов. В совокупности они могут потреблять гигабайты дискового пространства, если их не чистить часто. Поэтому необходимо удалить старые файлы, чтобы они не занимали место на диске.
Онлайн курс по Linux
Мы собрали концентрат самых востребованных знаний, которые позволят тебе начать карьеру администратора Linux, расширить текущие знания и сделать уверенный шаг к DevOps
Некоторые пользователи или приложения будут использовать каталог /tmp для хранения временных данных, в то время как другие используют более специфичное для задачи расположение, такое как каталоги демонов и непостоянных (volatile) пользовательских файлов в /run .
Непостоянные означает, что файлы существуют только в памяти. Если система перезагружается или происходит потеря питания, все содержимое энергозависимой памяти исчезнет.
Автоматическое очищение неиспользуемых временных файлов в Linux
В Red Hat Enterprise Linux 7 и новее включен новый инструмент systemd-tmpfiles . Этот инструмент предоставляет структурированный и настраиваемый метод управления временными каталогами и файлами.
Проверить запущенные сервисы можно командой:
При запуске служебного модуля systemd-tmpfiles-setup он запускает команду systemd-tmpfiles –create –remove . Команда проверяет файлы конфигурации из:
Если есть файлы и каталоги, отмеченные для удаления в указанных выше файлах конфигурации, они будут удалены. Для файлов и каталогов, отмеченных как для создания, они при необходимости создаются с правильными разрешениями.
Как временные файлы очищаются с помощью таймера Systemd
Блок таймера systemd , называемый systemd-tmpfiles-clean.timer , запускает службу systemd-tmpfiles-clean.service с регулярным интервалом, которая затем выполняет команду systemd-tmpfiles –clean .
В разделе [Timer] указывается, как часто следует запускать службу.
В приведенном выше примере служба systemd-tmpfiles-clean.service будет запущена через 15 минут после загрузки системы. Любой другой запуск происходит через 24 часа после последнего запуска службы. Вы можете настроить значения по своему вкусу.
Если вы внесете изменения, убедитесь, что вы перезагрузили сервис.
Как вручную очистить временные файлы
Давайте настроим systemd-tmpfiles для очистки каталога /mytmp . Это гарантирует, что в каталоге не будет файлов, которые не использовались последние 3 дня.
Вы можете скопировать пример файла конфигурации и обновить его — /usr/lib/tmpfiles.d/tmp.conf
Отредактируйте файл, как показано ниже.
Если вы хотите, чтобы каталог существовал с правильной принадлежностью, создайте конфигурацию, как показано ниже.
Любой файл в этом каталоге, который остается неиспользованным в течение последних 60 секунд, должен быть очищен.
После создания файла используйте следующую команду, чтобы убедиться, что файл содержит соответствующую конфигурацию.
Если вы не видите никаких ошибок в выводе, значит, это подтверждает правильность настроек конфигурации. Вы можете вызвать ручную очистку в любое время с помощью команды:
Онлайн курс по Linux
Мы собрали концентрат самых востребованных знаний, которые позволят тебе начать карьеру администратора Linux, расширить текущие знания и сделать уверенный шаг к DevOps
Источник
Как безопасно очистить папку tmp в Linux
Я использую оперативную память для моих tmpfs /tmp, 2 ГБ, если быть точным. Обычно этого достаточно, но иногда процессы создают файлы там и не могут очистить после себя. Это может произойти, если они потерпят крах. Мне нужно удалить эти потерянные tmp файлы, иначе в будущем /tmp не хватит места.
Как я могу безопасно собрать мусор / TMP? Некоторые люди делают это, проверяя отметку времени последнего изменения, но этот подход небезопасен, поскольку могут существовать длительные процессы, которым все еще нужны эти файлы. Более безопасный подход — объединить условие отметки времени последней модификации с условием, что ни у одного процесса нет дескриптора файла для файла. Есть ли программа / скрипт / и т.д., которые воплощают этот подход или какой-то другой подход, который также безопасен?
Кстати, разрешает ли Linux/Unix режим открытия файла с созданием, при котором созданный файл удаляется при завершении процесса создания, даже если он произошел сбой?
7 ответов 7
Вы можете попробовать что-то вроде этого:
find /tmp -mtime +7 -and -not -exec fuser -s <> ‘;’ -and -exec echo <> ‘;’
find используется для поиска файлов, которые соответствуют определенным критериям.
- -mtime +7 выбирает только файлы старше 7 дней (вы можете использовать любое другое значение)
- -exec fuser -s <> ‘;’ вызывает fuser в режиме без вывода сообщений для каждого файла, который соответствует критериям устаревания. fuser возвращает 0 (= true) для каждого файла, к которому обращались в данный момент, и 1 (= false) для недоступных. Поскольку мы заинтересованы только в unaccessed те, мы ставим -not перед этим -exec
- -exec echo <> ‘;’ просто печатает все имена файлов, соответствующие критериям. Вы можете использовать -exec rm <> ‘;’ вместо этого здесь, но так как это может удалить некоторые все еще используемые файлы, я думаю, что безопаснее сначала сделать простое эхо.
- edit: вы можете захотеть добавить что-то вроде -name ‘foo*.bar’ или -uid 123 чтобы ограничить эффекты очистки конкретными шаблонами файлов или идентификаторами пользователей, чтобы избежать случайных эффектов.
К последнему пункту: Учтите, что могут быть файлы, которые записываются только один раз (например, при загрузке системы), но часто читаются (например, любой файл X-session-cookie). Поэтому я рекомендую добавить некоторые проверки имен, чтобы они влияли только на файлы, созданные неисправными программами.
edit2: К вашему последнему вопросу: файл не будет удален с диска, пока ни у какого процесса не будет открытого дескриптора к нему (по крайней мере, для родных файловых систем linux). Проблема заключается в том, что запись в каталоге удаляется немедленно, а это означает, что с момента удаления файла новые процессы больше не смогут его открыть (поскольку к нему не прикреплено имя файла).
edit3: Но что, если я хотел бы автоматизировать весь процесс?
Как я уже сказал, могут быть файлы, которые записываются один раз, а затем читаются время от времени (например, файлы cookie сеанса X, файлы PID и т.д.). Они не будут исключены этим небольшим скриптом удаления (по этой причине вам может понадобиться выполнить тестовый прогон с echo прежде чем фактически удалять файлы).
Одним из способов реализации безопасного решения является использование atime .
atime хранит время последнего доступа к каждому файлу. Но эта опция файловой системы часто отключена, потому что она имеет некоторое влияние на производительность (согласно этому блогу где-то в 20-30% регионе). Есть относительное relatime , но оно записывает время доступа только в том случае, если mtime изменилось, так что этот нам не поможет.
Если вы хотите использовать atime , я бы порекомендовал иметь /tmp на отдельном разделе (в идеале, на виртуальном диске), чтобы влияние на производительность системы не было слишком большим.
После включения atime все, что вам нужно сделать, это заменить параметр -mtime в приведенной выше командной строке на -atime .
Вы можете удалить -not -exec fuser -s <> ‘;’ , но я бы оставил его там просто для уверенности (в случае, если приложения сохраняют файлы открытыми в течение длительного периода времени).
Но имейте в виду, что нужно проверить команду с помощью echo прежде чем вы удалите все, что нужно вашей системе!
Источник
Cleaning up temporary files astra linux
Zerstroer |
| ||
Опытный Профиль Репутация: нет Здравствуйте! При перезагрузке системы такой проблемы не наблюдается, только при начальной загрузке после полного отключения. /tmp примонтирован напрямую в корень раздела, на отдельный раздел не выносил. Прошу помочь. Спасибо. | |||
|
tzirechnoy |
| ||
|
Zerstroer |
| ||
Опытный Профиль Репутация: нет | |||
|
tzirechnoy |
| ||||||||
[ Время генерации скрипта: 0.0978 ] [ Использовано запросов: 21 ] [ GZIP включён ] Источник |