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.