Onde está o diretório temporário no Linux?

63

O Linux possui um diretório temporário padrão para uso geral, como a C:\Temppasta do Windows ? Se sim, onde está localizada? Encontrei uma pergunta SO sobre como localizar um tmpdiretório programaticamente , mas quero definir um local temporário em um arquivo de configuração XML com antecedência.

Pops
fonte
11
Sei que essa parece uma pergunta muito fácil, mas não consegui encontrar uma resposta clara e simples através da pesquisa. Muitos dos resultados obtidos foram para diretórios / arquivos temporários específicos do programa. Eu vi várias referências a /tmp, mas elas eram ambíguas sobre se isso é padrão para Linux ou apenas uma convenção comum.
PNF
5
O Windows C:\Tempcertamente não é padrão. O Windows 95 já estava %TEMP%apontando C:\WINDOWS\Temp.
grawity

Respostas:

91

O sistema de arquivos Hierarchy Standard versão 3.0 diz:

/ tmp: arquivos temporários

O /tmpdiretório deve estar disponível para programas que requerem arquivos temporários.

Os programas não devem assumir que quaisquer arquivos ou diretórios /tmpsejam preservados entre as invocações do programa.

Fundamentação

O padrão IEEE POSIX.1-2008 lista requisitos semelhantes à seção acima. Embora os dados armazenados /tmppossam ser excluídos de uma maneira específica do site, é recomendável que os arquivos e diretórios localizados /tmpsejam excluídos sempre que o sistema for inicializado.

A ESF adicionou essa recomendação com base no precedente histórico e na prática comum, mas não a tornou um requisito porque a administração do sistema não está dentro do escopo deste padrão.

/ var / tmp: arquivos temporários preservados entre as reinicializações do sistema

O /var/tmpdiretório é disponibilizado para programas que requerem arquivos ou diretórios temporários preservados entre as reinicializações do sistema. Portanto, os dados armazenados em /var/tmpsão mais persistentes que os dados em /tmp.

Os arquivos e diretórios localizados em /var/tmpnão devem ser excluídos quando o sistema é inicializado. Embora os dados armazenados /var/tmpsejam normalmente excluídos de uma maneira específica do site, é recomendável que as exclusões ocorram em um intervalo menos frequente do que /tmp.

Também, The Open Group Base Specifications Issue 7, Environment Variables menciona o seguinte:

TMPDIR Essa variável deve representar o nome do caminho de um diretório disponibilizado para programas que precisam de um local para criar arquivos temporários.

Cristian Ciupitu
fonte
É difícil argumentar com o padrão. Obrigado!
PNF
11

Esta é uma pergunta antiga, hoje existe outra opção disponível. As distribuições Linux em systemdque se baseia (90% delas) agora podem usar o $XDG_RUNTIME_DIRdiretório ( XDG Base Directory Specification ) para armazenar certos tipos de arquivos temporários. Geralmente está localizado em /run/user/$uid. Este é um diretório por usuário com 700permissões que fornece melhor segurança. Esta é uma tmpfsmontagem que fornece desempenho. A desvantagem tmpfsé que ele só deve ser usado para manter pequenos arquivos e soquetes.

Eu vejo isso como um casamento de /tmpe /var/run.

oᴉɹǝɥɔ
fonte
Claro que a tecnologia melhorou desde 5 anos
yass
10

Sim / tmp é para uso geral. Veja aqui e aqui No padrão de hierarquia do sistema de arquivos.

/ tmp / Arquivos temporários (veja também / var / tmp). Freqüentemente não preservado entre as reinicializações do sistema.

Com mais alguns detalhes listados no PDF.

OldWolf
fonte
2

Você não pode escolher com antecedência um único nome de diretório temporário que funcione para qualquer sistema Linux. De fato, você também não pode fazer isso no Windows. De acordo com o artigo da Wikipedia sobre pastas temporárias , o diretório temporário no Windows é determinado pela variável de ambiente TEMP. Se você estivesse simplesmente usando c:\Tempcomo um diretório temporário em um sistema Windows que configurasse o TEMP para outra coisa, qualquer programa que usasse seu arquivo XML para escolher um diretório temporário falharia.

Em resumo, o diretório temporário do sistema é determinado pelo ambiente em todos os sistemas operacionais modernos que eu conheço, incluindo o Windows e qualquer sistema semelhante ao UNIX. Definir um único caminho estático como seu diretório temporário funcionará apenas enquanto os padrões não tiverem sido alterados.

De qualquer forma, o diretório temporário padrão em um sistema Linux típico é /tmp. É o equivalente C:\Tempno sentido de que é apenas o diretório temporário padrão, não universal. Mesmo se /tmpestiver disponível, se um usuário (ou o sistema) tiver definido a variável de ambiente TEMP, o valor dessa variável deverá ser usado.

Você pode tentar escolher um diretório temporário em relação ao diretório inicial do usuário, que você pode criar.

Ryan Thompson
fonte
No meu caso, acho que é seguro supor que os padrões ainda estejam em vigor, mas é definitivamente bom ter isso em mente.
Pops
Alguns programas como bash, gcc, inkscape ou lynx usam a TMPDIRvariável de ambiente.
Cristian Ciupitu
@ Ryan, por que /tmppresidir sobre a variável temp?
Pacerier 29/07
0

A pergunta inicial era: O Linux possui um diretório temporário padrão. Se sim, onde está localizada? As pastas tmp podem ser encontradas em: Sistema de arquivos / tmp e Sistema de arquivos / var / tmp O conteúdo / tmp pode ser excluído - se você souber quais arquivos / pastas são necessários / não exigidos por vários aplicativos em um "conforme necessário" base. Os arquivos não necessários geralmente são os baixados por um aplicativo para facilitar o próprio aplicativo apenas nesse ponto; portanto, não são mais necessários após a execução do aplicativo. A pasta / var / tmp não deve ser tocada.

FranklynA
fonte
11
Esta resposta não fornece mais informações do que a resposta aceita, por isso é bastante inútil.
zx485 27/07