Tenía la impresión de que los archivos "antiguos" /tmp
se eliminarán regularmente. Sin embargo, me parece que /tmp
crecerá todo el tiempo que quiera y no se eliminará nada. Algunas personas dicen que es mejor dejarlo /tmp
solo y eliminar su contenido solo si el disco se está llenando.
Mi pregunta es, ¿está /tmp
realmente diseñado para no cuidarse solo? ¿Cuáles son las mejores prácticas?
/tmp
se limpia después del reinicio, pero esto depende del sistema de archivos montado allí. Quedf -h
diceRespuestas:
Para responder las preguntas:
/tmp
supone que se vacía automáticamente: sí/tmp
regular y manual: No , su sistema se encargará de ellos.Si puedes preguntarte a ti mismo:
/tmp
por cualquier razón? (Necesito espacio, quiero eliminar rastros, etc.): depende , sigue leyendo .El Estándar de jerarquía del sistema de archivos (FHS) establece :
/var/tmp/
tiene un propósito similar , pero no debe eliminarse durante el reinicio.Se no se garantiza que
/tmp/
o/var/tmp/
se limpian con regularidad. Esto puede depender de su distribución y configuración, aunque la mayoría de los sistemas realizan alguna limpieza de vez en cuando. Ver comentario demike
.Si necesita eliminar un archivo en / tmp , vea primero si el archivo está en uso. Puede hacerlo fácilmente con:
Si tiene derechos para hacerlo, esto mostrará el proceso que contiene el identificador de ese archivo, como el nombre del proceso, el PID y el tipo de archivo. Para mostrar realmente todos los procesos, anteponer
sudo
o ejecutar como usuario root .le mostrará todos los archivos
/tmp
y directorios a continuación (+D
) que están actualmente abiertos. Por supuesto, no debe eliminar estos archivos.De hecho, cuando elimina un archivo que todavía está abierto, si tiene los derechos para hacerlo, se vuelve inaccesible desde el espacio de nombres del sistema de archivos, pero aún existe para los procesos que tienen un identificador de archivo abierto para él. Después de cerrar ese identificador, el archivo ya no es accesible para ese proceso, y si ningún proceso tiene el archivo abierto más, finalmente se elimina. Un proceso no debe suponer que el archivo sobrevive entre
open
llamadas posteriores , pero los programadores son descuidados y nunca se sabe. Por esa razón, no es tan inteligente eliminar archivos que todavía están en uso por algunos programas.fuente
Creo que esto depende de la variante del sistema operativo. Me imagino que / tmp normalmente se borra al reiniciar, y de hecho no sería seguro que el sistema se limpie a mitad de sesión, ya que no sabrá qué archivos están activos.
Si eres valiente, es posible que desees lanzar un comando en crontab que elimine archivos anteriores a cierta edad, pero esto puede causar algunos problemas si elimina archivos que todavía se usan. Puede probar un comando (no lo he probado) como
Lo que teóricamente eliminará todos los archivos en / tmp anteriores a 10 días.
fuente
-r
a esoLos directorios / tmp y / var / tmp se limpian en un horario normal. Esto puede depender de tu distribución. En mi sistema CentOS (un clon de RedHat) hay un trabajo cron programado para ejecutarse tmpwatch , un limpiador tmp dir, en un horario diario . Los archivos en / var / tmp pueden permanecer un poco más tiempo que los archivos en / tmp /. También he visto scripts que eliminan / tmp (pero explícitamente no / var / tmp) en un reinicio, sabiendo que no puede haber nada que mantenga abierto ese archivo ya que todos los procesos son nuevos.
Entonces, sí, / tmp tiene mantenimiento de scripts básicos. Todavía puede llenarse fuera de esos tiempos de mantenimiento. Si elige limpiar las cosas manualmente, la mejor práctica de sysadmin es tener cuidado. La tradición de los administradores de sistemas habla de enlaces simbólicos en / tmp que apuntan a los archivos del sistema necesarios que se eliminaron cuando los administradores de sistemas n00b ejecutaron un
find
script simple .fuente
En CentOS hay un trabajo
/etc/cron.daily
llamadotmpwatch
que eliminará recursivamente archivos a los que no se haya accedido durante un tiempo determinado. Normalmente, se usa para limpiar directorios que se usan para el espacio de almacenamiento temporal como / tmp.Este es el
/etc/cron.daily/tmpwatch
guion/tmp
el contenido del directorio se elimina solo cuando se reinicia el sistema, porque el proceso en ejecución puede tener acceso a archivos desde ese directorio.fuente
Puedes eliminar el contenido de
/tmp/
; pero el problema al hacerlo es que si tiene un servicio que escribe regularmente/tmp/
y elimina los archivos, puede hacer que el servicio se bloquee o se rompa hasta que se reinicie.fuente
El FHS define el
/tmp
directorio como "archivos temporales (ver también / var / tmp), a menudo no conservados entre reinicios del sistema", y/var/tmp
como "archivos temporales para preservar entre reinicios".Hoy en día, al
/tmp
ser un sistema de archivos RAM (tmpfs) por defecto (aunque opcional) en muchas distribuciones de GNU / Linux,/tmp
es efectivamente no persistente.(Discutiblemente) las aplicaciones deben administrar sus archivos temporales en consecuencia, lo que en mi opinión, incluye eliminarlos cuando su uso ha finalizado, y no requieren que los administradores programen posibles eliminaciones destructivas.
fuente
/tmp
cuando/tmp
terminen con ellos o cuando salgan, pero aún existe un problema de archivos que quedan después de una terminación anormal (bloqueo) de un programa.Si está ejecutando Debian (o un derivado como Ubuntu), debe mirar su archivo / etc / default / rcS y ajustar la
TMPTIME
variable de entorno. Por definición, lo que reside en / tmp no tiene nada que hacer aquí en el próximo reinicio.yo recomiendo
TMPTIME
variable en un servidorfuente
Las distribuciones son diferentes, por supuesto, pero espero que los archivos temporales sean administrados automáticamente por el sistema de forma inmediata. Probablemente usarían trabajos cron o el servicio systemd-tmpfiles-clean. Si le preocupa el espacio en disco, este es un comando útil para ver cuánto espacio ocupa cada carpeta raíz:
Para ver si su sistema está utilizando el servicio systemd para administrar archivos temporales, puede probar:
En la parte inferior, verá algo como lo siguiente, que le indica cuándo se ejecutó el servicio por última vez:
Tenga en cuenta que este servicio se cerrará tan pronto como termine con la limpieza. Un servicio de temporizador es responsable de activarlo regularmente. Puedes consultarlo con:
Y debe esperar algo como lo siguiente:
Si vuelve a mirar el servicio real responsable de limpiar los archivos, verá que todo lo que hace es ejecutar:
Para que pueda ejecutar ese comando directamente, o para hacerlo correctamente, simplemente haga:
Que ejecutará el comando apropiado para su sistema. Sin embargo, debe tener en cuenta que este no es un comando "eliminar todos los archivos temporales ahora". Hay varios archivos de configuración que controlan lo que realmente se elimina y cuándo, para que las aplicaciones puedan configurar individualmente sus archivos temporales.
Un lugar para buscar el manejo genérico de archivos temporales podría ser el
/usr/lib/tmpfiles.d/tmp.conf
que podría tener las siguientes líneas relevantes:Podría cambiarlos a un tiempo más corto, si su sistema se queda sin espacio, por ejemplo, para:
Para estar seguro de lo que está haciendo,
man tmpfiles.d
lea el manual. Nuevamente, he encontrado que el enfoque presentado aquí es relevante en un sistema CentOS (basado en RedHat) y Ubuntu, pero no sé mucho sobre otras distribuciones.fuente