¿Dónde está el directorio temporal en Linux?

63

¿Linux tiene un directorio temporal estándar para uso general, como la C:\Tempcarpeta de Windows ? Si es así, ¿dónde está ubicado? Encontré una pregunta SO sobre cómo encontrar un tmpdirectorio mediante programación , pero quiero establecer una ubicación temporal en un archivo de configuración XML antes de tiempo.

Estallidos
fuente
1
Sé que esto parece una pregunta realmente fácil, pero no pude encontrar una respuesta clara y simple mediante la búsqueda. Muchos de los resultados que obtuve fueron para directorios / archivos temporales específicos del programa. Vi múltiples referencias a /tmp, pero eran ambiguas sobre si eso es estándar para Linux o simplemente una convención común.
Aparece el
55
Ventanas de C:\Tempes sin duda no estándar. Windows 95 ya tenía %TEMP%apuntando a C:\WINDOWS\Temp.
Grawity

Respuestas:

91

La versión 3.0 de la jerarquía del sistema de archivos dice:

/ tmp: archivos temporales

El /tmpdirectorio debe estar disponible para programas que requieren archivos temporales.

Los programas no deben suponer que ningún archivo o directorio /tmpse conserva entre invocaciones del programa.

Razón fundamental o base lógica

El estándar IEEE POSIX.1-2008 enumera requisitos similares a los de la sección anterior. Aunque los datos almacenados /tmpse pueden eliminar de una manera específica del sitio, se recomienda que los archivos y directorios ubicados en /tmpse eliminen siempre que se inicie el sistema.

FHS agregó esta recomendación sobre la base de precedentes históricos y prácticas comunes, pero no la convirtió en un requisito porque la administración del sistema no está dentro del alcance de esta norma.

/ var / tmp: archivos temporales conservados entre reinicios del sistema

El /var/tmpdirectorio está disponible para programas que requieren archivos temporales o directorios que se conservan entre reinicios del sistema. Por lo tanto, los datos almacenados en /var/tmpson más persistentes que los datos /tmp.

Los archivos y directorios ubicados en /var/tmpno se deben eliminar cuando se inicia el sistema. Aunque los datos almacenados /var/tmpgeneralmente se eliminan de una manera específica del sitio, se recomienda que las eliminaciones ocurran en un intervalo menos frecuente que /tmp.

Además, el número 7 de las especificaciones básicas de The Open Group, Variables de entorno, menciona lo siguiente:

TMPDIR Esta variable representará una ruta de acceso de un directorio disponible para programas que necesitan un lugar para crear archivos temporales.

Cristian Ciupitu
fuente
Es difícil discutir con el estándar. ¡Gracias!
Aparece el
11

Esta es una vieja pregunta, así que hoy hay otra opción disponible. Las distribuciones de Linux en las systemdque se basa (que es el 90% de ellas) ahora pueden usar el $XDG_RUNTIME_DIRdirectorio ( XDG Base Directory Specification ) para almacenar ciertos tipos de archivos temporales. Generalmente se encuentra en /run/user/$uid. Este es un directorio por usuario con 700permisos que proporciona una mejor seguridad. Este es un tmpfssoporte que proporciona rendimiento. La desventaja de esto tmpfses que solo debe usarse para mantener pequeños archivos y sockets.

Lo veo como un matrimonio de /tmpy /var/run.

oᴉɹǝɥɔ
fuente
La tecnología ha mejorado seguro desde hace 5 años
Yass
10

Sí / tmp es para uso general. Ver aquí y aquí en el estándar de jerarquía del sistema de archivos.

/ tmp / Archivos temporales (ver también / var / tmp). A menudo no se conserva entre reinicios del sistema.

Con algunos detalles más enumerados en el PDF.

OldWolf
fuente
2

No puede elegir un solo nombre de directorio temporal con anticipación que funcione para cualquier sistema Linux. De hecho, tampoco puedes hacer eso en Windows. Según el artículo de Wikipedia sobre carpetas temporales , el directorio temporal en Windows está determinado por la variable de entorno TEMP. Si simplemente estuviera usando c:\Tempun directorio temporal en un sistema Windows que configurara TEMP en otra cosa, entonces cualquier programa que use su archivo XML para elegir un directorio temporal fallará.

En resumen, el directorio temporal del sistema está determinado por el entorno en todos los sistemas operativos modernos que conozco, incluidos Windows y cualquier sistema similar a UNIX. Establecer una única ruta estática como su directorio temporal solo funcionará mientras no se hayan cambiado los valores predeterminados.

De todos modos, el directorio temporal estándar en un sistema Linux típico es /tmp. Es el equivalente de C:\Tempen el sentido de que es solo el directorio temporal predeterminado, no universal. Incluso si /tmpestá disponible, si un usuario (o el sistema) ha establecido la variable de entorno TEMP, el valor de esa variable debe utilizarse en su lugar.

Puede intentar elegir un directorio temporal relativo al directorio de inicio del usuario, que puede crear.

Ryan Thompson
fuente
En mi caso, creo que es una suposición segura que los valores predeterminados todavía están en su lugar, pero definitivamente es bueno tenerlo en cuenta.
Aparece el
Algunos programas como bash, gcc, inkscape o lynx usan la TMPDIRvariable de entorno.
Cristian Ciupitu
@ Ryan, ¿por qué /tmppreside la variable temporal?
Pacerier
0

La pregunta inicial fue: ¿Linux tiene un directorio temporal estándar? Si es así, ¿dónde está ubicado? Las carpetas tmp se encuentran en: Sistema de archivos / tmp y Sistema de archivos / var / tmp El contenido / tmp podría eliminarse, si sabe qué archivos / carpetas son necesarios / no son necesarios para varias aplicaciones en un "según sea necesario" base. Los archivos no requeridos generalmente son aquellos descargados por una aplicación para facilitar la aplicación en ese punto solamente, por lo tanto, no se requieren más después de que la aplicación haya funcionado. La carpeta / var / tmp no debe tocarse en absoluto.

FranklynA
fuente
1
Esta respuesta no proporciona más información que la respuesta aceptada, por lo que es bastante inútil.
zx485