Kiedy / tmp zostanie wyczyszczone?

143

Zabieram się do umieszczania różnych plików /tmpi zastanawiałem się nad zasadami ich usuwania?

Wyobrażam sobie, że jest różny dla różnych dystrybucji, a szczególnie interesują mnie wersje desktopowe Ubuntu i Fedora.

Ale fajny byłby ogólny sposób na sprawdzenie tego.

Jeszcze lepszy byłby miły ogólny sposób kontrolowania go! (Coś w rodzaju „każdego dnia o 3 nad ranem usuń wszystkie /tmppliki starsze niż 60 dni, ale nie usuwaj katalogu przy ponownym uruchomieniu”)

John Lawrence Aspden
źródło
Powiązane: askubuntu.com/questions/20783/…
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

Odpowiedzi:

155

To zależy od twojej dystrybucji. W niektórych systemach jest on usuwany tylko po uruchomieniu, inne mają cronjobs z uruchomionym usuwaniem elementów starszych niż n godzin.

  • W systemach podobnych do Debiana: podczas rozruchu (reguły są zdefiniowane w /etc/default/rcS).
  • W systemach podobnych do RedHat: według wieku (RHEL6 /etc/cron.daily/tmpwatch; RHEL7 i podobny do RedHat w systemie, w którym jest skonfigurowany /usr/lib/tmpfiles.d/tmp.conf, wywoływany przez systemd-tmpfiles-clean.service).
  • Na Gentoo /etc/conf.d/bootmisc.
kba
źródło
19
I niezależnie od tego, kiedy to się dzieje, jedynym bezpiecznym momentem jest zazwyczaj rozruch, zaraz po zamontowaniu, ponieważ uruchomione procesy mogą mieć zablokowane pliki i nie należy ich usuwać.
adapttr
Dostępne są również pakiety, które mogą je okresowo usuwać.
Samuel Edwin Ward
2
W systemach podobnych do RedHata z systememd (centos7 / rhel7), jest on skonfigurowany w /usr/lib/tmpfiles.d/tmp.conf. Jest wywoływany przez cel systemd systemd-tmpfiles-clean.service.
Franklin Piat,
1
W starszej wersji Debiana możesz rozważyć tmpreaperpakiet, to rozwidlona wersja tmpwatch.
Věroš K.,
Ubuntu 19.04:cat: /etc/default/rcS: No such file or directory
Boris
24

W CentOS (i zakładam, że Fedora) jest praca w /etc/cron.daily o nazwie tmpwatch. Uruchamia się /usr/sbin/tmpwatch, co spowoduje usunięcie plików, do których nie uzyskano dostępu przez określoną liczbę godzin, tj. Domyślnym zachowaniem jest sprawdzenie atimepliku, aby ocenić, czy był on ostatnio używany.

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

Inne dystrybucje (i instalacje) mogą mieć / tmp zamontowane jako tmpfs, który jest systemem plików w pamięci. Zostanie to wyczyszczone podczas rozruchu.

cjc
źródło
Nie mam tego w CentOS 7.4.
Kevin Lemaire,
@KevinLemaire Funkcjonalność została przeniesiona do usługi systemowej. lists.centos.org/pipermail/centos/2014-October/147155.html
cjc
Jeśli nie znalazłeś pliku tmpwatch, możesz pobrać tmpwatch za pomocąyum install tmpwatch
Ng Sek Long
Czy mogę dostać tmpwatch na inne dystrybucje? Brzmi niesamowicie. Jestem na dystrybucji opartej na Debianie
Jonathan
sudo find /tmp -type f -atime +10 -deleteusunie pliki tmp, które nie były dostępne w ciągu 10 dni, używaj ostrożnie
Jonathan
13

Na Ubuntu 11.10, którego używam, jest skrypt upstart/etc/init/mounted-tmp.conf . Początek tego mówi:

# 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)

Możesz przeczytać więcej szczegółów, jednak ogólnie /tmpjest czyszczony, gdy jest zamontowany lub /usrzamontowany. Zdarza się to regularnie podczas uruchamiania, więc to /tmpczyszczenie działa przy każdym uruchomieniu.

W /etc/default/rcSmasz TMPTIMEustawione, który jest stosowany w powyższym skrypcie karmić dwa findpolecenia na końcu - w zasadzie kontrolowania usunięcie plików na podstawie ich czasów (zmodyfikowane, zmienione dostępne).

icyrock.com
źródło
5

W RHEL 6.2 pliki w / tmp są usuwane przez tmpwatch, jeśli nie były dostępne przez 10 dni.

Plik /etc/cron.daily/tmpwatch określa sposób wywoływania 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

Argumenty -x to pliki, które należy wykluczyć. Argument od drugiego do ostatniego to czas oczekiwania po czasie ostatniego dostępu. Ostatnim argumentem jest katalog do sprawdzenia.

johnjamesmiller
źródło
5

Począwszy od Fedory 18, /tmpjest ona tmpfsdomyślnie zamontowana (tj. RAM), a zatem usuwana po wyłączeniu zasilania.

To zachowanie można wyłączyć przez wydanie systemctl mask tmp.mounti ponowne uruchomienie (i ponownie włączyć przez wydanie i ponowne systemctl unmask tmp.mounturuchomienie), a następnie /tmpzostanie ono zamontowane w /systemie plików i będzie sterowane przez /usr/lib/tmpfiles.d/tmp.confustawienia.

Zobacz http://fedoraproject.org/wiki/Features/tmp-on-tmpfs i man tmpfiles.dwięcej szczegółów na temat każdej sprawy.

Skippy le Grand Gourou
źródło
3

W openSUSE 13.2 zachowanie czyszczenia można kontrolować za pomocą następującej zmiennej w 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

Możesz zmodyfikować te zmienne przez (można również tam znaleźć użycie każdej zmiennej)

  1. Edytuj /etc/sysconfig/cronplik ręcznie w linii poleceń.
  2. Otwórz Yast i przejdź do System -> / etc / sysconfig Editor -> System -> Cron
leodream
źródło
2

Jeszcze lepszy byłby miły ogólny sposób kontrolowania go! (Coś w rodzaju „każdego dnia o 3 nad ranem usuń wszystkie pliki / tmp starsze niż 60 dni, ale nie usuwaj katalogu przy ponownym uruchomieniu”)

Pliki sortowane, których nie chcesz usuwać podczas uruchamiania, znajdują się w / var / tmp

Po to jest :-)

nemo
źródło