Soluzione 1:
Dipende dalla tua distribuzione. Su alcuni sistemi, viene eliminato solo all'avvio, altri hanno cronjob in esecuzione che eliminano elementi più vecchi di n ore.
- Su Ubuntu 14:utilizzo di
tmpreaper
che viene chiamato da/etc/cron.daily
, configurato tramite/etc/default/rcS
e/etc/tmpreaper.conf
. (Crediti a questa risposta). - Su Ubuntu 16:utilizzo di
tmpfiles.d
. (Crediti a questa risposta). - Su altri sistemi simili a Debian:all'avvio (le regole sono definite in
/etc/default/rcS
). - Sui sistemi simili a RedHat:per età (RHEL6 era
/etc/cron.daily/tmpwatch
; RHEL7/RHEL8 e simile a RedHat con systemd è configurato in/usr/lib/tmpfiles.d/tmp.conf
, chiamato dasystemd-tmpfiles-clean.service
). - Su Gentoo
/etc/conf.d/bootmisc
.
Soluzione 2:
Su CentOS (e presumo Fedora), c'è un lavoro in /etc/cron.daily chiamato tmpwatch
. Questo esegue /usr/sbin/tmpwatch
, che eliminerà i file a cui non è stato effettuato l'accesso nel numero di ore specificato, ovvero, il comportamento predefinito è esaminare il atime
affinché il file valuti 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.
Soluzione 3:
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ù dettagli, comunque in generale /tmp
viene pulito quando è montato o /usr
è montato. Questo accade regolarmente all'avvio, quindi questo /tmp
la pulizia viene eseguita a ogni avvio.
In /etc/default/rcS
hai TMPTIME
set, che è usato nello script init sopra per alimentare i due find
comandi alla sua fine - fondamentalmente controllando l'eliminazione dei file in base ai loro tempi (modificati, modificati, accessi).
Soluzione 4:
Da Fedora 18 in poi, /tmp
è montato su tmpfs
(cioè RAM) per impostazione predefinita, e quindi cancellato allo spegnimento.
Questo comportamento può essere disabilitato immettendo systemctl mask tmp.mount
e riavviare (e riattivare emettendo systemctl unmask tmp.mount
e riavvia), quindi /tmp
verrà montato sul /
filesystem e può essere controllato da /usr/lib/tmpfiles.d/tmp.conf
impostazioni.
Vedere http://fedoraproject.org/wiki/Features/tmp-on-tmpfs e man tmpfiles.d
per maggiori dettagli su ciascun caso.
Soluzione 5:
Su RHEL 6.2 i file in /tmp vengono eliminati da tmpwatch se non vi si accede da 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 i file da escludere. Il penultimo argomento è il tempo di attesa dopo l'ultimo accesso. L'ultimo argomento è la directory da esaminare.