GNU/Linux >> Tutoriales Linux >  >> Linux

¿Se supone que debemos eliminar manualmente el contenido de /tmp?

Para responder a las preguntas:

  • Es /tmp se supone que se vaciará automáticamente:
  • ¿Se supone que debemos eliminar archivos en /tmp? regularmente y manualmente:No , su sistema se encargará de ellos.

Si puedes preguntarte:

  • ¿Puedo eliminar archivos de /tmp? por el motivo que sea (necesita espacio, quiere eliminar rastros, etc.):Depende , sigue leyendo .

El estándar de jerarquía del sistema de archivos (FHS) establece:

El directorio /tmp debe estar disponible para los programas que requieren archivos temporales.

Los programas no deben asumir que los archivos o directorios en /tmp se conservan entre invocaciones del programa.

/var/tmp/ tiene un propósito similar, pero no debe ser eliminado durante el reinicio.

No está garantizado que /tmp/ o /var/tmp/ se limpian periódicamente. 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 de mike .

Si necesita eliminar un archivo en /tmp , vea primero si el archivo está en uso. Puede hacerlo fácilmente con:

lsof /tmp/file_to_delete

Si tiene derechos para hacerlo, esto mostrará el proceso que tiene el identificador de ese archivo, como el nombre del proceso, el PID y el tipo de archivo. Para mostrar realmente todos los procesos, anteponga sudo o ejecutar como usuario root .

lsof +D /tmp

le mostrará todos los archivos en /tmp y directorios a continuación (+D ) que están abiertos actualmente. Por supuesto, no debe eliminar estos archivos.

De hecho, cuando elimina un archivo que aún 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 más abierto el archivo, finalmente se elimina. Un proceso no debe suponer que el archivo sobrevive entre los subsiguientes open llamadas, pero los programadores son descuidados y nunca se sabe. Por esa razón no es tan inteligente para eliminar archivos que todavía están en uso por algunos programas.


Creo que esto depende de la variante del sistema operativo. Me imagino que /tmp generalmente se borra al reiniciar y, de hecho, no sería seguro que el sistema se limpiara solo en mitad de la sesión, ya que no sabrá qué archivos están activos.

Si es valiente, es posible que desee lanzar un comando en crontab que elimine archivos anteriores a cierta edad, pero esto podría causar algunos problemas si elimina los archivos que aún 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 bajo /tmp que tengan más de 10 días.


Los directorios /tmp y /var/tmp se limpian según un programa normal. Esto puede depender de su distribución. En mi sistema CentOS (un clon de RedHat) hay un trabajo cron programado para ejecutar tmpwatch, un limpiador de directorios tmp, en un horario diario. Los archivos en /var/tmp pueden quedarse un poco más que los archivos en /tmp/. También he visto secuencias de comandos 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 desde scripts básicos. Todavía puede llenarse fuera de esos tiempos de mantenimiento. Si elige limpiar las cosas manualmente, la mejor práctica del administrador de sistemas es tener cuidado. La tradición de los administradores de sistemas habla sobre los enlaces simbólicos en /tmp que apuntan a los archivos del sistema necesarios que se eliminaron cuando los administradores de sistemas n00b ejecutaron un simple find guión.


Linux
  1. ¿La diferencia entre /opt y /usr/local?

  2. UNIX/Linux:¿Cuál es el permiso correcto de los directorios /tmp y /var/tmp?

  3. ¿Qué son los archivos /dev/zero y /dev/null en Linux?

  4. ¿Cuándo debo usar /dev/shm/ y cuándo debo usar /tmp/?

  5. ¿Cuáles son los significados de /usr/sbin, /usr/local/sbin y /usr/local/bin?

Cómo eliminar archivos y directorios en Linux

Cómo deshabilitar la eliminación automática de los archivos en los directorios /tmp y /var/tmp en CentOS / RHEL 5,6

Comprender los archivos /proc/mounts, /etc/mtab y /proc/partitions

¿Dónde están documentados los contenidos de /proc del kernel de Linux?

¿Deberían vivir los sitios web en /var/ o /usr/ según el uso recomendado?

¿Eliminar todo /var/log?