Quando viene cancellato / tmp?


143

Sto prendendo per inserire vari file /tmpe mi chiedevo quali fossero le regole per cancellarli?

Immagino che sia diverso per le diverse distribuzioni e sono particolarmente interessato alle versioni desktop Ubuntu e Fedora.

Ma un bel modo generale di scoprirlo sarebbe un'ottima cosa.

Ancora meglio sarebbe un bel modo generale per controllarlo! (Qualcosa come "ogni giorno alle 3 del mattino, elimina tutti i /tmpfile più vecchi di 60 giorni, ma non cancellare la directory al riavvio")


Risposte:


155

Dipende dalla tua distribuzione. Su alcuni sistemi, viene eliminato solo all'avvio, altri hanno cronjob in esecuzione eliminando elementi più vecchi di n ore.

  • Su sistemi simili a Debian: all'avvio (le regole sono definite in /etc/default/rcS).
  • Su sistemi simili a RedHat: per età (RHEL6 era /etc/cron.daily/tmpwatch; RHEL7 e RedHat-like con systemd è configurato /usr/lib/tmpfiles.d/tmp.conf, chiamato da systemd-tmpfiles-clean.service).
  • Su Gentoo /etc/conf.d/bootmisc.

19
E indipendentemente da quando ciò accade, l'unico momento sicuro è generalmente all'avvio, subito dopo il montaggio, poiché i processi in esecuzione potrebbero avere file bloccati lì e questi non dovrebbero essere eliminati.
— adattamento

Ci sono anche pacchetti disponibili che possono rimuoverli periodicamente.
— Samuel Edwin Ward,

2
Su sistemi simili a RedHat con systemd (centos7 / rhel7), è configurato in /usr/lib/tmpfiles.d/tmp.conf. Viene chiamato dal target di systemd systemd-tmpfiles-clean.service.
— Franklin Piat,

1
Su Debian legacy, puoi considerare il tmpreaperpacchetto, è la versione biforcuta di tmpwatch.
— Věroš K.,

Ubuntu 19.04:cat: /etc/default/rcS: No such file or directory
— Boris,

24

Su CentOS (e presumo Fedora), c'è un lavoro in /etc/cron.daily chiamato tmpwatch. /usr/sbin/tmpwatchViene eseguito , che eliminerà i file a cui non è stato effettuato l'accesso nel numero di ore specificato, ovvero il comportamento predefinito consiste nell'esaminare atimeil file per valutare se è stato utilizzato di recente.

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

Altre distribuzioni (e installazioni) possono avere / tmp montato come tmpfs, che è un filesystem in memoria. Questo verrà cancellato all'avvio.


Non ho questo su CentOS 7.4.
— Kevin Lemaire,

@KevinLemaire La funzionalità è stata spostata in un servizio systemd. lists.centos.org/pipermail/centos/2014-October/147155.html
— cjc

Se non hai trovato il file tmpwatch, puoi scaricare tmpwatch utilizzandoyum install tmpwatch
— Ng Sek Long,

Posso ottenere tmpwatch su altre distro? Sembra fantastico. Sono in distribuzione basata su debian
— Jonathan

sudo find /tmp -type f -atime +10 -deleteeliminerà i file tmp a cui non è stato effettuato l'accesso in 10 giorni, utilizzare con cura
— Jonathan

13

Su Ubuntu 11.10 che sto usando, c'è uno script upstart in /etc/init/mounted-tmp.conf. L'inizio dice questo:

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

Puoi leggere più in dettaglio, tuttavia in generale /tmpviene pulito quando è montato o /usrmontato. Questo accade regolarmente all'avvio, quindi questa /tmppulizia viene eseguita ad ogni avvio.

In /etc/default/rcSavete TMPTIMEimpostato, che viene utilizzato nello script init sopra per alimentare i due findcomandi alla fine - sostanzialmente controllando la cancellazione dei file in base ai loro tempi (modificati, cambiati, accessibili).


5

Su RHEL 6.2 i file in / tmp vengono eliminati da tmpwatch se non sono stati raggiunti entro 10 giorni.

Il file /etc/cron.daily/tmpwatch definisce il modo in cui viene chiamato 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

Gli argomenti -x sono file da escludere. Il penultimo argomento è il tempo di attesa dopo l'ultimo tempo di accesso. L'ultimo argomento è la directory da esaminare.


5

Da Fedora 18 in poi, /tmpè montato su tmpfs(ovvero RAM) di default, e quindi cancellato allo spegnimento.

Questo comportamento può essere disabilitato emettendo systemctl mask tmp.mounte riavviando (e riattivando emettendo systemctl unmask tmp.mounte riavviando), quindi /tmpsarà montato sul /filesystem e può essere controllato dalle /usr/lib/tmpfiles.d/tmp.confimpostazioni.

Vedi http://fedoraproject.org/wiki/Features/tmp-on-tmpfs e man tmpfiles.dper maggiori dettagli su ciascun caso.


3

Su openSUSE 13.2, il comportamento di cancellazione potrebbe essere controllato con la seguente variabile in 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

È possibile modificare queste variabili da (l'utilizzo di ciascuna variabile può essere trovato anche lì)

  1. Modifica il /etc/sysconfig/cronfile manualmente nella riga di comando.
  2. Apri Yast e naviga in Sistema -> / etc / sysconfig Editor -> Sistema -> Cron

2

Ancora meglio sarebbe un bel modo generale per controllarlo! (Qualcosa come "ogni giorno alle 3 del mattino, elimina tutti i file / tmp più vecchi di 60 giorni, ma non cancellare la directory al riavvio")

I file Sorta-Tempy che non si desidera cancellare all'avvio vanno in / var / tmp

Ecco a cosa serve :-)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.