Когда /tmp очищается?

Я собираюсь положить различные файлы в /tmp, а я задумался о правилах их удаления?

Я представляю, что это отличается для разных дистрибутивов, и мне особенно интересны версии для настольных компьютеров Ubuntu и Fedora.

Но хороший общий способ выяснить это было бы здорово.

Еще лучше был бы хороший общий способ управления им! (Что-то вроде "каждый день в 3 часа ночи, удалите любой /tmp файлы старше 60 дней, но не очищайте каталог при перезагрузке ')

8 ответов

Решение

Это зависит от вашего распространения. В некоторых системах он удаляется только при загрузке, в других есть cronjobs, выполняющие удаление элементов старше n часов.

  • На Debian-подобных системах: при загрузке (правила определены в /etc/default/rcS).
  • В RedHat-подобных системах: по возрасту (RHEL6 было /etc/cron.daily/tmpwatch; RHEL7 и RedHat-подобные с systemd это настроено в /usr/lib/tmpfiles.d/tmp.confназывается systemd-tmpfiles-clean.service).
  • На Gentoo /etc/conf.d/bootmisc,

В CentOS (и я полагаю, Fedora) в /etc/cron.daily есть работа, которая называется tmpwatch, Это работает /usr/sbin/tmpwatch, который удалит файлы, к которым не обращались в течение указанного количества часов, т. е. поведение по умолчанию заключается в проверке atime для файла, чтобы оценить, использовался ли он недавно.

http://linux.die.net/man/8/tmpwatch

Другие дистрибутивы (и установки) могут иметь / tmp, смонтированный как tmpfs, который является файловой системой в памяти. Это будет очищено при загрузке.

На Ubuntu 11.10, который я использую, есть сценарий выскочки в /etc/init/mounted-tmp.conf, Начало этого говорит это:

# mounted-tmp - Clean /tmp directory
#
# Cleans up the /tmp directory when it does not exist as a temporary
# filesystem.

description "Clean /tmp directory"

start on (mounted MOUNTPOINT=/tmp) or (mounted MOUNTPOINT=/usr)

Вы можете прочитать более подробно, однако в целом /tmp очищается, когда он либо установлен, либо /usr установлен. Это регулярно происходит при загрузке, так что это /tmp очистка выполняется на каждой загрузке.

В /etc/default/rcS у тебя есть TMPTIME набор, который используется в приведенном выше скрипте инициализации для подачи двух find команды в его конце - в основном управление удалением файлов в зависимости от их времени (изменение, изменение, доступ).

Начиная с Fedora 18, /tmp установлен на tmpfs (т.е. ОЗУ) по умолчанию, и, следовательно, стирается при отключении питания.

Это поведение можно отключить, выдав systemctl mask tmp.mount и перезагрузите компьютер (и включите, выдав systemctl unmask tmp.mount и перезагрузите), а затем /tmp будет установлен на / файловая система и может контролироваться /usr/lib/tmpfiles.d/tmp.conf Настройки.

Смотрите http://fedoraproject.org/wiki/Features/tmp-on-tmpfs и man tmpfiles.d для более подробной информации о каждом случае.

На RHEL 6.2 файлы в / tmp удаляются tmpwatch, если к ним не было доступа в течение 10 дней.

Файл /etc/cron.daily/tmpwatch определяет способ вызова tmpwatch.

#! /bin/sh
flags=-umc
/usr/sbin/tmpwatch "$flags" -x /tmp/.X11-unix -x /tmp/.XIM-unix \
    -x /tmp/.font-unix -x /tmp/.ICE-unix -x /tmp/.Test-unix \
    -X '/tmp/hsperfdata_*' 10d /tmp

Аргументы -x - это файлы, которые нужно исключить. От второго до последнего аргумента - это время ожидания после последнего времени доступа. Последний аргумент - это каталог для изучения.

В openSUSE 13.2 поведение очистки можно контролировать с помощью следующей переменной в sysconfig.

  • MAX_DAYS_IN_TMP
  • MAX_DAYS_IN_LONG_TMP
  • TMP_DIRS_TO_CLEAR
  • LONG_TMP_DIRS_TO_CLEAR
  • OWNER_TO_KEEP_IN_TMP
  • CLEAR_TMP_DIRS_AT_BOOTUP

Вы можете изменить эти переменные (использование каждой переменной также можно найти там)

  1. Изменить /etc/sysconfig/cron файл вручную в командной строке.
  2. Откройте Yast и перейдите в Система -> /etc/sysconfig Editor -> Система -> Cron

Еще лучше был бы хороший общий способ управления им! (Что-то вроде "каждый день в 3 часа утра, удаляйте любые файлы /tmp старше 60 дней, но не очищайте каталог при перезагрузке")

Сорта временные файлы, которые вы не хотите очищать при загрузке, находятся в /var/tmp

Вот для чего это:-)

... файлы в/tmp, и я задался вопросом о правилах их удаления?

В дополнение ко всем подробным ответам, найденным здесь, может быть интересно отметить, что FHS (стандарт иерархии файловой системы ) говорит о временных каталогах в целом:

/tmp

Каталог /tmp должен быть доступен для программ, которым требуются временные файлы.

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

/вар/тмп

Каталог /var/tmp доступен для программ, которым требуются временные файлы или каталоги, сохраняемые между перезагрузками системы. Таким образом, данные, хранящиеся в /var/tmp, более устойчивы, чем данные в /tmp.

Файлы и каталоги, расположенные в /var/tmp, нельзя удалять при загрузке системы. Хотя данные, хранящиеся в /var/tmp, обычно удаляются в зависимости от сайта, рекомендуется удалять их с меньшими интервалами, чем в /tmp.

Другие вопросы по тегам