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

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

1
задан 28 January 2014 в 23:48

7 ответов

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

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

/etc/default/rcS

TMPTIME указывает, как частоту tmp dir может быть очищена в днях

134
ответ дан 25 May 2018 в 23:34
  • 1
    Очистка при каждой загрузке не идеальна для машины, которая никогда не перезагружается, как сервер. У меня более 500 000 файлов, занимающих 5 Гб места в моем / tmp, потому что у моего сервера 378 дней работы. Я не хочу перезагружать его, просто потому, что очистка этих файлов при перезагрузке занимает несколько часов. – rjmunro 25 January 2012 в 17:47
  • 2
    В вашем случае вы должны дать шанс tmpreaper. – qbi 25 February 2013 в 05:01
  • 3
    Задача CRON может легко решить эту проблему. – Ken Sharp 8 March 2014 в 20:27
  • 4
    Также tmpwatch должен быть подходящим инструментом. – ArekBulski 28 October 2015 в 16:29
  • 5
    Я с @KenSharp в этом: работа CRON делает трюк для сервера с таким большим временем безотказной работы. См. askubuntu.com/questions/2368/how-do-i-set-up-a-cron-job – Yuri Sucupira 16 April 2016 в 03:08

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

при следующем перезагрузке

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

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

TMPTIME=7

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

58
ответ дан 25 May 2018 в 23:34
  • 1
    хороший информация. Но в котором скрипт является командой очистки? Я видел /etc/init/mounted-temp.conf, но у него есть строка start on mounted MOUNTPOINT=/tmp, которая заставляет меня думать, что она неприменима. – enzotib 9 January 2011 в 23:56
  • 2
    Если вы не хотите, чтобы файл был удален автоматически, поместите его в /var/tmp вместо /tmp. – Gilles 11 January 2011 в 01:29
  • 3
    Также удобно хранить файлы, которые вы не хотите потерять (визуализированные видеокадры), когда ваша машина выходит из строя, возможно, из-за OOM. Лучшим решением было бы, конечно, решить проблему. :-) – Ken Sharp 8 March 2014 в 20:28
  • 4
    Можно ли это сделать в Cygwin? – CMCDragonkai 14 May 2014 в 13:19

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

26
ответ дан 25 May 2018 в 23:34
  • 1
    в моей системе tmpreaper не был в /etc/cron.daily - но я смог установить его с помощью apt-get – Joe Germuska 3 November 2017 в 23:46

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

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

#/etc/tmpfiles.d/tmp.conf

d /tmp 1777 root root 20d

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

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

20
ответ дан 25 May 2018 в 23:34
  • 1
    [F1] – Martin Schröder 15 April 2017 в 04:52
  • 2
    Я обнаружил, что вы можете сохранить исходные разрешения и владельца файлов, используя дефисы: d /tmp/ - - - 20d – Dave Yarwood 22 May 2018 в 18:38
  • 3
    Также стоит отметить: вы можете проверить свою конфигурацию, выполнив задание на очистку вручную: systemctl start systemd-tmpfiles-clean – Dave Yarwood 22 May 2018 в 18:38

До 14.04:

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

10
ответ дан 25 May 2018 в 23:34
  • 1
    Появляется с 14.04+, он использует только tmpreaper, а не «за загрузку». скрипт FWIW – rogerdpack 8 September 2016 в 19:03
  • 2
    Мои системы 14.04 очищаются при перезагрузке. Никогда не слышал о tmpreaper. – Ken Sharp 13 May 2017 в 10:51
  • 3
    что, если вы никогда не перезагружаете систему? – Lưu Vĩnh Phúc 5 December 2017 в 15:37

На одном из наших серверов, на котором запущен 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
ответ дан 25 May 2018 в 23:34
  • 1
    Возможно, вам будет лучше использовать tmpwatch . – poolie 28 September 2011 в 09:59
  • 2
    Последняя строка чрезвычайно опасна. Обычно каждый может запускать ln -s /usr /tmp/kaboom или даже ln -s /* /tmp/ ... – Daniel Alder 29 February 2016 в 02:25

В 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
[d2 ] Таким образом, systemd-tmpfiles-clean работает при завершении работы и один раз в день в противном случае. Файлы, которые он очищает, могут быть расширены с помощью /etc/tmpfiles.d, упомянутого в другом ответе.

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

3
ответ дан 25 May 2018 в 23:34

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

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