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

Как очищается каталог /tmp? Это автоматически? Если так, как часто это убирается?

352
задан 28 January 2014 в 21:48

8 ответов

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

Для 14.04 смотрите https://askubuntu.com/a/759048/1366

Для 16.10 смотрите https://askubuntu.com/a/857154/453746


Старый ответ с 2011:

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

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

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

201
ответ дан 28 January 2014 в 21:48

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

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

#/etc/tmpfiles.d/tmp.conf

d /tmp 1777 root root 20d

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

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

58
ответ дан 28 January 2014 в 21:48

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

26
ответ дан 28 January 2014 в 21:48

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

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

/etc/default/rcS

TMPTIME говорит о том, как часто будет очищаться tmp dir в дни

145
ответ дан 28 January 2014 в 21:48

До 14. 04:

Очистка производится каждый раз при перезагрузке.

11
ответ дан 28 January 2014 в 21:48

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

$ systemctl cat systemd-tmpfiles-clean.service 
# /lib/systemd/system/systemd-tmpfiles-clean.service
#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.

[Unit]
Description=Cleanup of Temporary Directories
Documentation=man:tmpfiles.d(5) man:systemd-tmpfiles(8)
DefaultDependencies=no
Conflicts=shutdown.target
After=local-fs.target time-sync.target
Before=shutdown.target

[Service]
Type=oneshot
ExecStart=/bin/systemd-tmpfiles --clean
IOSchedulingClass=idle

И

$ systemctl cat systemd-tmpfiles-clean.timer  
# /lib/systemd/system/systemd-tmpfiles-clean.timer
#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.

[Unit]
Description=Daily Cleanup of Temporary Directories
Documentation=man:tmpfiles.d(5) man:systemd-tmpfiles(8)

[Timer]
OnBootSec=15min
OnUnitActiveSec=1d

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

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

11
ответ дан 28 January 2014 в 21:48

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

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

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

TMPTIME=7

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

69
ответ дан 28 January 2014 в 21:48

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

Сценарий:

#!/bin/sh
# Clean file and dirs more than 3 days old in /tmp nightly

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

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

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

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

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

4
ответ дан 28 January 2014 в 21:48

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

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