Я собираюсь складывать разные файлы в /tmp
, а меня интересовали правила их удаления?
Я представляю себе это по-разному для разных дистрибутивов, и меня особенно интересуют настольные версии Ubuntu и Fedora.
Но хороший общий способ узнать было бы здорово.
Еще лучше был бы хороший общий способ управления этим! (Что-то вроде "каждый день в 3 часа ночи удалять все /tmp
файлы старше 60 дней, но не очищать каталог при перезагрузке ')
Это зависит от вашего дистрибутива. В некоторых системах он удаляется только при загрузке, в других есть cronjobs, выполняющие удаление элементов старше п часов.
tmpreaper
который вызывается /etc/cron.daily
, настроенный через /etc/default/rcS
и /etc/tmpreaper.conf
. (Кредиты на этот ответ).tmpfiles.d
. (Кредиты на этот ответ)./etc/default/rcS
)./etc/cron.daily/tmpwatch
; RHEL7 / RHEL8 и RedHat-подобные с systemd он настроен в /usr/lib/tmpfiles.d/tmp.conf
, вызванный systemd-tmpfiles-clean.service
)./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
set, который используется в приведенном выше сценарии инициализации для подачи двух find
команды в конце - в основном управляющие удалением файлов в зависимости от их времени (изменено, изменено, выполнено доступ).
В 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 - это файлы, которые нужно исключить. Второй аргумент - это время ожидания по истечении времени последнего доступа. Последний аргумент - это каталог для проверки.
Начиная с Fedora 18, /tmp
установлен на tmpfs
(т.е. RAM) по умолчанию и, таким образом, стирается при выключении питания.
Это поведение можно отключить, выполнив 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
для получения более подробной информации по каждому случаю.
В 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
файл вручную в командной строке.Еще лучше был бы хороший общий способ управления этим! (Что-то вроде «каждый день в 3 часа ночи, удаляйте все файлы / tmp старше 60 дней, но не очищайте каталог при перезагрузке»)
Файлы Sorta-tempy, которые вы не хотите очищать при загрузке, находятся в / var / tmp
Вот для чего :-)