Коли очищається / tmp?


143

Я беруся вносити різні файли /tmp, і я замислювався над правилами їх видалення?

Я уявляю, що для різних дистрибутивів різне, і мене особливо цікавлять версії для настільних комп'ютерів Ubuntu та Fedora.

Але хороший загальний спосіб дізнатися було б чудовою справою.

Ще краще було б хороший загальний спосіб його контролю! (Щось на кшталт "щодня о 3 ранку, видаліть /tmpфайли, старші за 60 днів, але не очищайте каталог при перезавантаженні")


Відповіді:


155

Це залежить від вашого розповсюдження. У деяких системах вона видаляється лише під час завантаження, в інших - за допомогою 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.

19
І незалежно від того, коли це відбувається, єдиний безпечний момент - це звичайно після завантаження, відразу після монтажу, оскільки у запущених процесах можуть бути заблоковані файли, і їх не слід видаляти.
адаптер

Також є пакети, які можуть періодично їх видаляти.
Семюел Едвін Уорд

2
У подібних RedHat системах з systemd (centos7 / rhel7) він налаштований у /usr/lib/tmpfiles.d/tmp.conf. Це викликається цільовою системою systemd-tmpfiles-clean.service.
Франклін Піат

1
На застарілому Debian ви можете розглянути tmpreaperпакет, це роздвоєна версія tmpwatch.
Věroš K.

Ubuntu 19.04:cat: /etc/default/rcS: No such file or directory
Борис

24

У CentOS (і я вважаю Fedora) є робота в /etc/cron.daily, яка називається tmpwatch. Це запуститься /usr/sbin/tmpwatch, що видалить файли, до яких не було доступно за вказану кількість годин, тобто поведінка за замовчуванням полягає в тому, щоб перевірити atimeфайл для оцінки того, чи не використовувався він останнім часом.

http://linux.die.net/man/8/tmpwatch

Інші дистрибутиви (і установки) можуть мати / tmp, встановлений як tmpfs, що є файловою системою в пам'яті. Це очиститься під час завантаження.


У мене цього немає на CentOS 7.4.
Кевін Лімер

@KevinLemaire Функціональність була перенесена в системну службу. list.centos.org/pipermail/centos/2014-O
жовтня/

Якщо ви не знайшли файл tmpwatch, можете завантажити tmpwatch за допомогоюyum install tmpwatch
Ng Sek Long

Чи можу я отримати tmpwatch на інших дистрибутивах? Звучить дивовижно. Я в дистрибутиві на основі debian
Джонатан

sudo find /tmp -type f -atime +10 -deleteвидалить файли tmp, до яких не було доступно протягом 10 днів, використовуйте обережно
Джонатан

13

В 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встановлено, що використовується у вищезазначеному скрипті init для подачі двох findкоманд в його кінці - в основному керування видаленням файлів залежно від їх часу (модифіковані, змінені, доступні).


5

На 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 - це файли, які потрібно виключити. Аргумент від 2 до останнього - це час дочекатися часу останнього доступу. Останній аргумент - це каталог, який потрібно вивчити.


5

З 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докладнішу інформацію про кожен випадок.


3

На 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

Ви можете змінити ці змінні шляхом (використання кожної змінної також можна знайти там)

  1. Відредагуйте /etc/sysconfig/cronфайл вручну в командному рядку.
  2. Відкрийте Yast і перейдіть до System -> / etc / sysconfig Editor -> System -> Cron

2

Ще краще було б хороший загальний спосіб його контролю! (Щось на зразок "щодня о 3 ранку, видаліть файли / tmp старші 60 днів, але не очищайте каталог при перезавантаженні")

Файли сортування-темпи, які не потрібно очищати під час завантаження, заходять у / var / tmp

Ось для чого це :-)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.