Tenía la impresión de que los archivos "antiguos" /tmpse eliminarán regularmente. Sin embargo, me parece que /tmpcrecerá todo el tiempo que quiera y no se eliminará nada. Algunas personas dicen que es mejor dejarlo /tmpsolo y eliminar su contenido solo si el disco se está llenando.
Mi pregunta es, ¿está /tmprealmente diseñado para no cuidarse solo? ¿Cuáles son las mejores prácticas?

/tmpse limpia después del reinicio, pero esto depende del sistema de archivos montado allí. Quedf -hdiceRespuestas:
Para responder las preguntas:
/tmpsupone que se vacía automáticamente: sí/tmpregular y manual: No , su sistema se encargará de ellos.Si puedes preguntarte a ti mismo:
/tmppor 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
sudoo ejecutar como usuario root .le mostrará todos los archivos
/tmpy 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
openllamadas 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
find / tmp -type f -ctime +10 -exec rm {} +Lo que teóricamente eliminará todos los archivos en / tmp anteriores a 10 días.
fuente
-ra 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
findscript simple .fuente
En CentOS hay un trabajo
/etc/cron.dailyllamadotmpwatchque 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/tmpwatchguion#! / 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 / usr / sbin / tmpwatch "$ flags" 30d / var / tmp para d en / var / {caché / man, catman} / {cat?, X11R6 / cat?, local / cat?}; hacer si [-d "$ d"]; luego / usr / sbin / tmpwatch "$ flags" -f 30d "$ d" fi hecho/tmpel 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
/tmpdirectorio como "archivos temporales (ver también / var / tmp), a menudo no conservados entre reinicios del sistema", y/var/tmpcomo "archivos temporales para preservar entre reinicios".Hoy en día, al
/tmpser un sistema de archivos RAM (tmpfs) por defecto (aunque opcional) en muchas distribuciones de GNU / Linux,/tmpes 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
/tmpcuando/tmpterminen 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
TMPTIMEvariable de entorno. Por definición, lo que reside en / tmp no tiene nada que hacer aquí en el próximo reinicio.yo recomiendo
TMPTIMEvariable 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.confque 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.dlea 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