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


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.

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.


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


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.


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.


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

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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.