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


143

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

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

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

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


Ответы:


155

Это зависит от вашего распространения. В некоторых системах он удаляется только при загрузке, в других есть 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.

19
И независимо от того, когда это происходит, единственным безопасным моментом, как правило, является загрузка, сразу после монтирования, поскольку запущенные процессы могут блокировать файлы, и их не следует удалять.
adaptr

Есть также пакеты, которые могут периодически удалять их.
Сэмюэль Эдвин Уорд

2
На RedHat-подобных системах с systemd (centos7 / rhel7) это настраивается в /usr/lib/tmpfiles.d/tmp.conf. Это называется целью systemd systemd-tmpfiles-clean.service.
Франклин Пят

1
На старом Debian вы можете рассмотреть tmpreaperпакет, это разветвленная версия tmpwatch.
Верош К.

Ubuntu 19.04:cat: /etc/default/rcS: No such file or directory
Борис

24

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

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

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


У меня нет этого на CentOS 7.4.
Кевин Лемэр

@KevinLemaire Функциональность была перенесена в сервис systemd. lists.centos.org/pipermail/centos/2014-October/147155.html
cjc

Если вы не нашли файл tmpwatch, вы можете скачать tmpwatch с помощьюyum install tmpwatch
Ng Sek Long

Могу ли я получить tmpwatch на других дистрибутивах? Звучит потрясающе. Я в дистрибутиве на основе Debian
Джонатан

sudo find /tmp -type f -atime +10 -deleteудалит файлы tmp, к которым не было доступа в течение 10 дней, используйте с осторожностью
Джонатан

13

На Ubuntu 11.10, который я использую, есть сценарий upstart/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команды в его конце - в основном контролируя удаление файлов на основе их времени (модифицированный, изменился, доступ).


5

На 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 - это файлы, которые нужно исключить. От второго до последнего аргумента - это время ожидания после последнего времени доступа. Последний аргумент - это каталог для изучения.


5

Начиная с 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более подробную информацию о каждом случае.


3

В 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

2

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

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.