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

Как очищается каталог /tmp ? Автоматически? Если да, то как часто он очищается?

261 голос | спросил Olivier Lalonde 9 Jpm1000000pmSun, 09 Jan 2011 22:26:19 +030011 2011, 22:26:19

8 ответов


175

Внимание! Этот ответ устарел с по крайней мере ubuntu 14.04. См. Другие ответы на текущую ситуацию, и если они докажут правильность, то выведите их в ярость. Также опубликуйте комментарий, чтобы я мог поставить ссылку на текущий правильный ответ.

В 14.04 см. https://askubuntu.com/a/759048/1366

В 16.10 см. https://askubuntu.com/a/857154/453746


Старый ответ от 2011 года:

Очистка /tmp выполняется с помощью скрипта upstart /etc/init/mounted-tmp.conf . Скрипт запускается выскочкой каждый раз, когда монтируется /tmp . Практически это означает при каждой загрузке.

Скрипт выполняет примерно следующее: если файл в /tmp старше $ TMPTIME дней, он будет удален.

Значение по умолчанию $ TMPTIME равно 0, что означает, что каждый файл и каталог в /tmp удаляются. $ TMPTIME - это переменная среды, определенная в /etc /default /rcS .

ответил lesmana 10 Jam1000000amMon, 10 Jan 2011 03:17:59 +030011 2011, 03:17:59
134

Каталог по умолчанию очищается при каждой загрузке, потому что по умолчанию TMPTIME равен 0.

Здесь вы можете изменить время в следующем файле:

  /и т.д. /по умолчанию /RCS
 

TMPTIME указывает, как часто можно отключить dmp tmp в дни

ответил Max Ruf 9 Jpm1000000pmSun, 09 Jan 2011 22:35:02 +030011 2011, 22:35:02
58

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

Изменение частоты очистки /tmp

Значение по умолчанию, сообщающее вашей системе о сбросе /tmp при перезагрузке, сохраняется в файле /etc /default /rcS . Значение, которое мы рассмотрим, это TMPTIME .

Текущее значение TMPTIME = 0 говорит об удалении файлов при перезагрузке, несмотря на возраст файла. Изменение этого значения на другой (положительный) номер изменит количество дней, в течение которых файл может выжить в /tmp .

  TMPTIME = 7
 

Этот параметр позволит файлам оставаться в /tmp до тех пор, пока они не станут неделями, а затем удалите их при следующей перезагрузке. Отрицательное число ( TMPTIME = -1 ) сообщает системе никогда ничего не удалять в /tmp . Это, вероятно, не то, что вы хотите, но доступно.

ответил hhlp 9 Jpm1000000pmSun, 09 Jan 2011 22:35:16 +030011 2011, 22:35:16
26

В Ubuntu 14.04 это делается tmpreaper , который вызывается ежедневно cron (от /etc/cron.daily ). Программу можно настроить с помощью /etc /default /rcS и /etc/tmpreaper.conf .

ответил Martin Schröder 19 PMpTue, 19 Apr 2016 15:00:24 +030000Tuesday 2016, 15:00:24
25

Я проверяю это на Ubuntu 16.10. Я могу подтвердить, что редактирование /etc /default /rcS больше не имеет никакого эффекта, и файлы в tmp уничтожаются при перезагрузке независимо от того, что вы вложили в этот файл. Как упоминают другие, tmpreaper больше не используется.

Я думаю, правильный ответ в том, что Ubuntu 16.10 имеет новую настройку. Существует папка /etc/tmpfiles.d, задокументированная на странице man «tmpfiles.d». В этой папке нужно поместить файл конфигурации, чтобы контролировать, будет ли /tmp удаляться. Это то, что я делаю, чтобы остановить перезагрузку стирания файлов в /tmp, если они не старше 20 дней:

  # /и т.д. /tmpfiles.d /tmp.conf

d /tmp 1777 корневой корень 20d
 

Замените «20d» на «-», если вы никогда не хотите, чтобы файлы были удалены. Это мое лучшее усилие, что страница руководства почти непроницаема деталями.

Преимущество новой установки заключается в том, что файловый очиститель может работать даже в том случае, если система не перезагружена (как в случае всегда на сервере). Думаю, это большой плюс.

ответил pauljohn32 5 MonEurope/Moscow2016-12-05T07:10:40+03:00Europe/Moscow12bEurope/MoscowMon, 05 Dec 2016 07:10:40 +0300 2016, 07:10:40
10

До 14.04:

Он очищается при каждом перезагрузке.

ответил Utku Demir 9 Jpm1000000pmSun, 09 Jan 2011 22:34:38 +030011 2011, 22:34:38
4

На одном из наших серверов под управлением Ubuntu у нас есть скрипт для удаления файлов в /tmp, и он работает в ночное время.

Сценарий:

  #! /Bin /ш
# Чистый файл и dirs более 3 дней в /tmp ночной

/usr /bin /find /tmp -type f -atime +2 -mtime +2 | xargs /bin /rm -f & amp; & amp; & amp; & amp;

/usr /bin /find /tmp -type d -mtime +2 -exec /bin /rm -rf '{}' \; & Amp; & Amp;

/usr /bin /find /tmp -type l -ctime +2 | xargs /bin /rm -f & amp; & amp; & amp; & amp;

/usr /bin /find -L /tmp -mtime +2 -print -exec rm -f {} \;
 

Просто сохраните содержимое выше в файле chmod 775 и создайте запись cron, чтобы запустить его. Поскольку это веб-сервер, мы не хотим перезагружать его по понятным причинам.

ответил Paul 28 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowWed, 28 Sep 2011 08:54:41 +0400 2011, 08:54:41
3

В systemd Ubuntu (15.10 и новее) это делается systemd, используя службу systemd-tmpfiles-clean и таймер:

  $ systemctl cat systemd-tmpfiles-clean.service
# /lib/systemd/system/systemd-tmpfiles-clean.service
# Этот файл является частью systemd.
#
# systemd - бесплатное программное обеспечение; вы можете перераспределить его и /или изменить его
# в соответствии с условиями лицензии GNU Lesser General Public License, опубликованной
# Фонд свободного программного обеспечения; либо версии 2.1 Лицензии, либо
# (по вашему выбору) любой более поздней версии.

[Ед. изм]
Описание = Очистка временных каталогов
Документация = человек: tmpfiles.d (5) man: systemd-tmpfiles (8)
DefaultDependencies = нет
Конфликты = shutdown.target
После = local-fs.target time-sync.target
Перед = shutdown.target

[Обслуживание]
Тип = OneShot
ExecStart = /bin /systemd-tmpfiles --clean
IOSchedulingClass = простаивает
 

и

  $ systemctl cat systemd-tmpfiles-clean.timer
# /lib/systemd/system/systemd-tmpfiles-clean.timer
# Этот файл является частью systemd.
#
# systemd - бесплатное программное обеспечение; вы можете перераспределить его и /или изменить его
# в соответствии с условиями лицензии GNU Lesser General Public License, опубликованной
# Фонд свободного программного обеспечения; либо версии 2.1 Лицензии, либо
# (по вашему выбору) любой более поздней версии.

[Ед. изм]
Описание = Ежедневная очистка временных каталогов
Документация = человек: tmpfiles.d (5) man: systemd-tmpfiles (8)

[Таймер]
OnBootSec = 15мин
OnUnitActiveSec = 1d
 

Так что systemd-tmpfiles-clean запускается при завершении работы и один раз в день в противном случае. Очищаемые файлы могут быть расширены с помощью /etc/tmpfiles.d , упомянутого в другом ответе .

Вы можете сами изменить поведение таймера, используя systemctl edit systemd-tmpfiles-clean.timer и используя различные параметры конфигурации systemd Timer (см. man 5 systemd.timer ).

ответил muru 6 WedEurope/Moscow2017-12-06T20:11:15+03:00Europe/Moscow12bEurope/MoscowWed, 06 Dec 2017 20:11:15 +0300 2017, 20:11:15

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132