Когда /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
Вы можете изменить эти переменные (использование каждой переменной также можно найти там)
- Изменить
/etc/sysconfig/cron
файл вручную в командной строке. - Откройте 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.