¿Cómo se /tmp
limpia el directorio? ¿Es automático? Si es así, ¿con qué frecuencia se limpia?
¿Cómo se /tmp
limpia el directorio? ¿Es automático? Si es así, ¿con qué frecuencia se limpia?
Respuestas:
¡Nota! Esta respuesta está desactualizada desde al menos ubuntu 14.04. Vea otras respuestas para la situación actual y si resultan correctas, entonces vótelas furiosamente. También publique un comentario para que pueda poner un enlace aquí a la respuesta correcta actual.
Para 14.04 ver https://askubuntu.com/a/759048/1366
Para 16.10 ver https://askubuntu.com/a/857154/453746
Antigua respuesta de 2011:
La limpieza de /tmp
se realiza mediante el script inicial /etc/init/mounted-tmp.conf
. La secuencia de comandos se ejecuta desde el inicio cada vez que /tmp
se monta. Prácticamente eso significa en cada arranque.
El script hace aproximadamente lo siguiente: si un archivo /tmp
es anterior a $TMPTIME
días, se eliminará.
El valor predeterminado de $TMPTIME
es 0, lo que significa que todos los archivos y directorios /tmp
se eliminan. $TMPTIME
es una variable de entorno definida en /etc/default/rcS
.
El directorio se borra de manera predeterminada en cada arranque, porque TMPTIME
es 0 de forma predeterminada.
Aquí puede cambiar la hora en el siguiente archivo:
/etc/default/rcS
TMPTIME
dice con qué frecuencia el directorio tmp debería eliminarse en días
tmpreaper
una oportunidad.
tmpwatch
debería ser una herramienta adecuada.
Si bien la /tmp
carpeta no es un lugar para almacenar archivos a largo plazo, ocasionalmente desea mantener las cosas un poco más tiempo que la próxima vez que reinicie , que es el valor predeterminado en los sistemas Ubuntu. Sé una o dos veces que descargué algo /tmp
durante las pruebas, lo reinicié después de hacer cambios y luego perdí los datos originales nuevamente. Esto se puede cambiar si desea mantener sus /tmp
archivos un poco más.
Cambiar la /tmp
frecuencia de limpieza
La configuración predeterminada que le indica a su sistema que se borre /tmp
al reiniciar se mantiene en el /etc/default/rcS
archivo. El valor que veremos es TMPTIME
.
El valor actual de TMPTIME=0
dice eliminar archivos al reiniciar a pesar de la antigüedad del archivo. Cambiar este valor a un número diferente (positivo) cambiará la cantidad de días que un archivo puede sobrevivir /tmp
.
TMPTIME=7
Esta configuración permitiría que los archivos permanezcan /tmp
hasta que tengan una semana de antigüedad y luego los elimine en el próximo reinicio. Un número negativo ( TMPTIME=-1
) le dice al sistema que nunca elimine nada /tmp
. Probablemente no sea algo que desee, pero está disponible.
/etc/init/mounted-temp.conf
, pero tiene la línea start on mounted MOUNTPOINT=/tmp
que me hace pensar que no es aplicable.
/var/tmp
lugar de /tmp
.
Estoy comprobando esto en Ubuntu 16.10. Puedo certificar que la edición / etc / default / rcS ya no tiene ningún efecto y que los archivos en tmp se borran al reiniciar sin importar lo que coloque en ese archivo. Como otros mencionan, tmpreaper ya no se usa.
Creo que la respuesta correcta es que Ubuntu 16.10 tiene una nueva configuración. Hay una carpeta /etc/tmpfiles.d, documentada en la página de manual "tmpfiles.d". En esa carpeta, se debe colocar un archivo de configuración para controlar si se debe borrar / tmp. Esto es lo que estoy haciendo para evitar que los reinicios borren archivos en / tmp a menos que tengan 20 días de antigüedad:
#/etc/tmpfiles.d/tmp.conf
d /tmp 1777 root root 20d
Reemplace "20d" por "-" si nunca desea eliminar archivos. Este es mi mejor esfuerzo, esa página de manual es casi impenetrable con detalles.
La ventaja de la nueva configuración es que un limpiador de archivos aún puede ejecutarse incluso si el sistema no se reinicia (como en el caso de un servidor siempre en funcionamiento). Esa es una gran ventaja, creo.
man tmpfiles.d
d /tmp/ - - - 20d
systemctl start systemd-tmpfiles-clean
En Ubuntu 14.04 esto se hace mediante tmpreaper
, que cron llama diariamente (desde /etc/cron.daily
). El programa se puede configurar a través de /etc/default/rcS
y /etc/tmpreaper.conf
.
Se limpia cada vez que reinicia.
tmpreaper
.
En un systemd
Ubuntu (15.10 y más reciente), esto lo hace systemd, usando el systemd-tmpfiles-clean
servicio y el temporizador:
$ systemctl cat systemd-tmpfiles-clean.service
# /lib/systemd/system/systemd-tmpfiles-clean.service
# This file is part of systemd.
#
# systemd is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
[Unit]
Description=Cleanup of Temporary Directories
Documentation=man:tmpfiles.d(5) man:systemd-tmpfiles(8)
DefaultDependencies=no
Conflicts=shutdown.target
After=local-fs.target time-sync.target
Before=shutdown.target
[Service]
Type=oneshot
ExecStart=/bin/systemd-tmpfiles --clean
IOSchedulingClass=idle
Y
$ systemctl cat systemd-tmpfiles-clean.timer
# /lib/systemd/system/systemd-tmpfiles-clean.timer
# This file is part of systemd.
#
# systemd is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
[Unit]
Description=Daily Cleanup of Temporary Directories
Documentation=man:tmpfiles.d(5) man:systemd-tmpfiles(8)
[Timer]
OnBootSec=15min
OnUnitActiveSec=1d
Entonces se systemd-tmpfiles-clean
ejecuta en apagado, y una vez al día de lo contrario. Los archivos que limpia se pueden extender utilizando los /etc/tmpfiles.d
mencionados en otra respuesta .
Puede cambiar el comportamiento del temporizador usando systemctl edit systemd-tmpfiles-clean.timer
, y usando varias Timer
opciones de configuración de systemd (ver man 5 systemd.timer
).
/tmp
aún no se limpió. y necesito que lo limpien incluso el inicio manual sudo systemctl start systemd-tmpfiles-clean
no funciona. Alguna idea de por qué?
En uno de nuestros servidores que ejecutan Ubuntu, tenemos un script para eliminar archivos en / tmp y se ejecuta todas las noches.
El guión es:
#!/bin/sh
# Clean file and dirs more than 3 days old in /tmp nightly
/usr/bin/find /tmp -type f -atime +2 -mtime +2 |xargs /bin/rm -f &&
/usr/bin/find /tmp -type d -mtime +2 -exec /bin/rm -rf '{}' \; &&
/usr/bin/find /tmp -type l -ctime +2 |xargs /bin/rm -f &&
/usr/bin/find -L /tmp -mtime +2 -print -exec rm -f {} \;
Simplemente guarde el contenido anterior en un archivo chmod 775 el archivo y cree una entrada cron para ejecutarlo. Dado que este es un servidor web, no queremos reiniciarlo por razones obvias.
ln -s /usr /tmp/kaboom
o incluso ln -s /* /tmp/
...
tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0
en / etc / fstab.