Solución 1:
Eso depende de tu distribución. En algunos sistemas, se elimina solo cuando se inicia, otros tienen cronjobs que eliminan elementos anteriores a n. horas.
- En Ubuntu 14:usando
tmpreaper
que es llamado por/etc/cron.daily
, configurado a través de/etc/default/rcS
y/etc/tmpreaper.conf
. (Créditos a esta respuesta). - En Ubuntu 16:usando
tmpfiles.d
. (Créditos a esta respuesta). - En otros sistemas similares a Debian:en el arranque (las reglas se definen en
/etc/default/rcS
). - En sistemas tipo RedHat:por edad (RHEL6 era
/etc/cron.daily/tmpwatch
; RHEL7/RHEL8 y similar a RedHat con systemd está configurado en/usr/lib/tmpfiles.d/tmp.conf
, llamado porsystemd-tmpfiles-clean.service
). - En Gentoo
/etc/conf.d/bootmisc
.
Solución 2:
En CentOS (y supongo que Fedora), hay un trabajo en /etc/cron.daily llamado tmpwatch
. Esto ejecuta /usr/sbin/tmpwatch
, que eliminará los archivos a los que no se haya accedido en el número de horas especificado, es decir, el comportamiento predeterminado es examinar el atime
para que el archivo evalúe si se ha utilizado recientemente.
http://linux.die.net/man/8/tmpwatch
Otras distribuciones (e instalaciones) pueden tener /tmp montado como tmpfs, que es un sistema de archivos en memoria. Esto se borrará en el arranque.
Solución 3:
En Ubuntu 11.10 que estoy usando, hay un script advenedizo en /etc/init/mounted-tmp.conf
. El comienzo dice esto:
# 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)
Puede leer con más detalles, sin embargo, en general /tmp
se limpia cuando está montado o /usr
esta montado. Esto sucede regularmente en el arranque, por lo que este /tmp
la limpieza se ejecuta en cada arranque.
En /etc/default/rcS
tienes TMPTIME
set, que se usa en el script de inicio anterior para alimentar los dos find
comandos en su extremo, básicamente controlando la eliminación de archivos en función de sus tiempos (modificados, cambiados, accedidos).
Solución 4:
Desde Fedora 18 en adelante, /tmp
está montado en tmpfs
(es decir, RAM) de forma predeterminada y, por lo tanto, se borra al apagar.
Este comportamiento se puede desactivar emitiendo systemctl mask tmp.mount
y reinicie (y vuelva a habilitarlo emitiendo systemctl unmask tmp.mount
y reiniciar), y luego /tmp
se montará en el /
sistema de archivos y puede ser controlado por /usr/lib/tmpfiles.d/tmp.conf
configuración.
Consulte http://fedoraproject.org/wiki/Features/tmp-on-tmpfs y man tmpfiles.d
para más detalles sobre cada caso.
Solución 5:
En RHEL 6.2, tmpwatch elimina los archivos en /tmp si no se ha accedido a ellos en 10 días.
El archivo /etc/cron.daily/tmpwatch define la forma en que se llama a 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
Los argumentos -x son archivos que deben excluirse. El penúltimo argumento es el tiempo de espera después de la última vez que se accedió. El último argumento es el directorio a examinar.