У меня сложилось впечатление, что «старые» файлы /tmp
будут регулярно удаляться. Однако, мне кажется, что он /tmp
будет расти столько, сколько захочет, и ничего не будет удалено. Некоторые люди говорят, что лучше оставить в /tmp
покое и удалить его содержимое, только если диск заполнен.
У меня вопрос, /tmp
действительно ли он создан, чтобы не заботиться о себе? Каковы лучшие практики?
/tmp
очищается после перезагрузки, но это зависит от установленной там файловой системы. Чтоdf -h
говорит?Ответы:
Чтобы ответить на вопросы:
/tmp
должно быть освобождено автоматически: Да/tmp
регулярно и вручную: нет , ваша система позаботится о них.Если вы можете спросить себя:
/tmp
по какой - либо причине (нужно пространство, нужно удалить следы и т.д.): Это зависит от того , читайте дальше .Стандарт иерархии файловой системы (FHS) гласит :
/var/tmp/
имеет аналогичное назначение , но не должно быть удалено во время перезагрузки.Это не гарантирует , что
/tmp/
или/var/tmp/
убирается на регулярной основе. Это может зависеть от вашего дистрибутива и настроек, хотя большинство систем время от времени делают некоторую очистку. Смотрите комментарий поmike
.Если вам нужно удалить файл в / tmp , сначала посмотрите, используется ли файл. Вы можете сделать это легко с:
Если у вас есть права на это, это покажет процесс, содержащий дескриптор этого файла, например, имя процесса, PID и тип файла. Чтобы показать действительно все процессы, добавьте
sudo
или запустите от имени пользователя root .покажет вам все файлы
/tmp
и каталоги ниже (+D
), которые в данный момент открыты. Конечно, вы не должны удалять эти файлы.Фактически, когда вы удаляете файл, который все еще открыт, - если у вас есть права для этого - он становится недоступным из пространства имен файловой системы, но он все еще существует для процессов, для которых есть дескриптор открытого файла. После закрытия этого дескриптора файл больше не доступен для этого процесса, и если файл больше не открывается ни в одном процессе, он окончательно удаляется. Процесс не должен предполагать, что файл сохраняется между последующими
open
вызовами, но программисты небрежны, и вы никогда не узнаете. По этой причине не очень разумно удалять файлы, которые все еще используются некоторыми программами.источник
Я думаю, что это зависит от операционной системы. Я полагаю, что / tmp обычно очищается при перезагрузке, и на самом деле система не сможет безопасно очистить себя в середине сеанса, поскольку не будет знать, какие файлы активны.
Если вы смелы, вы можете добавить команду в crontab, которая удаляет файлы старше определенного возраста, но это может вызвать некоторые проблемы, если она удаляет файлы, которые все еще используются. Вы можете попробовать команду (я не пробовал), как
Который теоретически удалит все файлы в / tmp старше 10 дней.
источник
-r
к этомуКаталоги / tmp и / var / tmp очищаются по обычному расписанию. Это может зависеть от вашего дистрибутива. В моей системе CentOS (клон RedHat) есть хрон работу планируется запустить tmpwatch , а TMP реж уборщика, на ежедневный график . Файлы в / var / tmp могут храниться немного дольше, чем файлы в / tmp /. Я также видел сценарии, которые сокращают / tmp (но явно не / var / tmp) при перезагрузке, зная, что не может быть ничего, что удерживает этот файл открытым, так как все процессы новые.
Так что да, / tmp имеет поддержку из основных скриптов. Это все еще может заполнить вне тех времен обслуживания. Если вы решили чистить вещи вручную, лучше всего быть осторожным сисадмином. История системного администратора говорит о символических ссылках в / tmp, указывающих на необходимые системные файлы, которые были удалены, когда системные администраторы n00b запустили простой
find
сценарий.источник
На CentOS есть работа в
/etc/cron.daily
называется ,tmpwatch
который будет рекурсивно удаляет файлы , которые не получили доступ в течение заданного времени. Обычно он используется для очистки каталогов, которые используются для временного хранения, например / tmp.Это
/etc/cron.daily/tmpwatch
скрипт/tmp
содержимое каталога удаляется только при перезагрузке системы, поскольку запущенный процесс может иметь доступ к файлам из этого каталога.источник
Вы можете удалить контент из
/tmp/
; но проблема при этом заключается в том, что если у вас есть служба, которая регулярно пишет/tmp/
и удаляет файлы, вы можете вызвать сбой или поломку службы до ее перезапуска.источник
FHS определяет
/tmp
каталог в качестве «временных файлов (также см / уаг / TMP), часто не сохраняется между перезагрузками системы», а/var/tmp
также «временные файлы должны быть сохранены между перезагрузками».В настоящее время,
/tmp
поскольку файловая система ОЗУ (tmpfs) по умолчанию (хотя и необязательная) во многих дистрибутивах GNU / Linux,/tmp
фактически непостоянна.(Возможно), приложения должны соответствующим образом управлять своими временными файлами, что, на мой взгляд, включает их удаление после окончания их использования, и не требует от администраторов планирования возможных разрушительных удалений.
источник
/tmp
когда они/tmp
завершают работу с ними или когда они выходят, но все еще существует проблема с файлами, оставшимися после ненормального завершения (сбоя) программы.Если вы используете Debian (или его производную, например, Ubuntu), вы должны взглянуть на файл / etc / default / rcS и настроить
TMPTIME
переменную окружения. По определению, то, что находится в / tmp, не имеет никакого отношения к следующей перезагрузке.рекомендую
TMPTIME
переменную на сервереисточник
Разумеется, дистрибутивы разные, но я ожидаю, что система будет автоматически управлять временными файлами автоматически. Скорее всего, они будут использовать либо задания cron, либо службу systemd-tmpfiles-clean. Если вы беспокоитесь о дисковом пространстве, это полезная команда, чтобы посмотреть, сколько места занимает каждая корневая папка:
Чтобы увидеть, использует ли ваша система сервис systemd для управления временными файлами, вы можете просто попробовать:
Внизу вы увидите что-то вроде следующего, который сообщает вам, когда сервис последний раз запускался:
Обратите внимание, что эта служба выйдет, как только будет завершена очистка. Служба таймера отвечает за ее регулярное включение. Вы можете проверить это с:
И вы должны ожидать что-то вроде следующего:
Если вы снова посмотрите на реальную службу, ответственную за очистку файлов, вы увидите, что все, что она делает, это запускается:
Таким образом, вы можете либо запустить эту команду напрямую, либо сделать это правильно, просто выполните:
Который будет запускать соответствующую команду для вашей системы. Однако вы должны знать, что это не команда «удалить все временные файлы сейчас». Существует несколько файлов конфигурации, которые контролируют, что на самом деле удаляется и когда, чтобы приложения могли индивидуально настраивать свои временные файлы.
Одним из мест, где можно искать общую обработку временных файлов, может быть
/usr/lib/tmpfiles.d/tmp.conf
следующее:Вы можете изменить их на более короткое время, если вашей системе не хватает места, например, на:
Чтобы быть уверенным в том, что вы делаете,
man tmpfiles.d
прочитайте инструкцию. Опять же, я нашел подход, представленный здесь, актуальным для CentOS (на основе RedHat) и системы Ubuntu, но я не знаю много о других дистрибутивах.источник