Dov'è la directory temporanea in Linux?


63

Linux ha una directory temporanea standard per uso generale, come la C:\Tempcartella di Windows ? Se sì, dove si trova? Ho trovato una domanda SO sulla ricerca di una tmpdirectory a livello di codice , ma voglio impostare una posizione temporanea in un file di configurazione XML in anticipo.


1
So che sembra una domanda davvero semplice, ma non sono riuscito a trovare una risposta chiara e semplice durante la ricerca. Molti dei risultati che ho ottenuto sono stati per directory / file temporanei specifici del programma. Ho visto più riferimenti a /tmp, ma erano ambigui sul fatto che sia standard per Linux o solo una convenzione comune.
Schiocca il

5
Finestre di C:\Tempè certamente non standard. Windows 95 già %TEMP%indicava C:\WINDOWS\Temp.
Grawity,

Risposte:


91

Il Filesystem Hierarchy Standard versione 3.0 dice:

/ tmp: file temporanei

La /tmpdirectory deve essere resa disponibile per i programmi che richiedono file temporanei.

I programmi non devono presumere che eventuali file o directory /tmpsiano conservati tra le invocazioni del programma.

Fondamento logico

Lo standard IEEE POSIX.1-2008 elenca i requisiti simili alla sezione precedente. Sebbene i dati archiviati in /tmppossano essere eliminati in un modo specifico del sito, si consiglia di /tmpeliminare i file e le directory in cui si trova ogni volta che si avvia il sistema.

FHS ha aggiunto questa raccomandazione sulla base del precedente storico e della pratica comune, ma non l'ha resa un requisito poiché l'amministrazione del sistema non rientra nell'ambito di applicazione di questo standard.

/ var / tmp: file temporanei conservati tra i riavvii del sistema

La /var/tmpdirectory è resa disponibile per i programmi che richiedono file o directory temporanei conservati tra i riavvii del sistema. Pertanto, i dati archiviati /var/tmpsono più persistenti dei dati in /tmp.

I file e le directory che si trovano in /var/tmpnon devono essere eliminati all'avvio del sistema. Sebbene i dati archiviati vengano in /var/tmpgenere eliminati in un modo specifico del sito, si consiglia di eliminare a intervalli meno frequenti di /tmp.

Anche il numero 7 di Open Group Base Applications, Variabili d'ambiente, menziona quanto segue:

TMPDIR Questa variabile deve rappresentare un percorso di una directory resa disponibile per i programmi che necessitano di un posto per creare file temporanei.


È difficile discutere con lo standard. Grazie!
Viene visualizzato il

11

Questa è una vecchia domanda, quindi oggi è disponibile un'altra opzione. Le distribuzioni Linux che fanno affidamento systemd(che rappresentano il 90% di esse) ora possono usare la $XDG_RUNTIME_DIRdirectory ( XDG Base Directory Specification ) per archiviare alcuni tipi di file temporanei. Si trova generalmente a /run/user/$uid. Questa è una directory per utente con 700autorizzazioni che offre una migliore sicurezza. Questo è un tmpfssupporto che fornisce prestazioni. Il rovescio della medaglia di tmpfsè che dovrebbe essere usato solo per conservare piccoli file e socket.

Lo vedo come un matrimonio di /tmpe /var/run.


La tecnologia Certo è migliorata da 5 anni
Yass

10

Sì / tmp è per uso generale. Vedi qui e qui sullo standard di gerarchia dei filesystem.

/ tmp / File temporanei (vedere anche / var / tmp). Spesso non conservato tra i riavvii del sistema.

Con alcuni ulteriori dettagli elencati nel PDF.


2

Non è possibile scegliere in anticipo un singolo nome di directory temporaneo che funzionerà per qualsiasi sistema Linux. In effetti, non puoi farlo nemmeno su Windows. Secondo l' articolo di Wikipedia sulle cartelle temporanee , la directory temporanea su Windows è determinata dalla variabile di ambiente TEMP. Se stessi semplicemente usando c:\Tempuna directory temporanea su un sistema Windows che imposta TEMP su qualcos'altro, qualsiasi programma che utilizza il tuo file XML per scegliere una directory temporanea fallirebbe.

In breve, la directory temporanea del sistema è determinata dall'ambiente su tutti i moderni sistemi operativi che conosco, inclusi Windows e qualsiasi sistema simile a UNIX. L'impostazione di un singolo percorso statico come directory temporanea funzionerà solo finché i valori predefiniti non sono stati modificati.

Ad ogni modo, la directory temporanea standard in un tipico sistema Linux è /tmp. È l'equivalente di C:\Tempnel senso che è solo la directory temporanea predefinita, non universale. Anche se /tmpè disponibile, se un utente (o il sistema) ha impostato la variabile di ambiente TEMP, è invece necessario utilizzare il valore di tale variabile.

Puoi provare a scegliere una directory temporanea relativa alla home directory dell'utente, che puoi creare.


Nel mio caso, penso che sia un presupposto sicuro che le impostazioni predefinite siano ancora in atto, ma questo è sicuramente un bene da tenere a mente.
Viene visualizzato il

Alcuni programmi come bash, gcc, inkscape o lynx usano la TMPDIRvariabile d'ambiente.
Cristian Ciupitu,

@Ryan, Perché /tmppresiede la variabile temp?
Pacerier,

0

La domanda iniziale era: Linux ha una directory temporanea standard. Se sì, dove si trova? Le cartelle tmp sono disponibili in: File system / tmp & File System / var / tmp Il contenuto / tmp potrebbe essere eliminato - se si conoscono i file / le cartelle richiesti / non richiesti da varie app su un "come richiesto" base. I file non richiesti sono in genere quelli scaricati da un'app per facilitare l'app stessa solo a quel punto, quindi non sono più necessari dopo l'esecuzione dell'app. La cartella / var / tmp non deve essere toccata affatto.


1
Questa risposta non fornisce più informazioni della risposta accettata, quindi è abbastanza inutile.
zx485,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.