2011-09-06 19:43:10 +0000 2011-09-06 19:43:10 +0000
65
65

Waar is de tijdelijke directory in Linux?

Heeft Linux een standaard tijdelijke map voor algemeen gebruik, zoals de C:\Temp map van Windows? Zo ja, waar bevindt die zich? Ik vond een SO vraag over het programmatisch vinden van een tmp directory , maar ik wil van te voren een temp locatie instellen in een XML config bestand.

Antwoorden (5)

97
97
97
2011-09-06 20:09:43 +0000

De Filesystem Hierarchy Standard versie 3.0 zegt:

/tmp : Tijdelijke bestanden

De map /tmp moet beschikbaar gemaakt worden voor programma’s die tijdelijke bestanden nodig hebben.

Programma’s mogen er niet van uitgaan dat bestanden of mappen in /tmp tussen aanroepen van het programma bewaard blijven.

Rationale

De IEEE-norm POSIX.1-2008 bevat eisen die vergelijkbaar zijn met de bovenstaande sectie. Hoewel gegevens die zijn opgeslagen in /tmp op een locatiespecifieke manier mogen worden verwijderd, wordt aanbevolen dat bestanden en mappen die zich in /tmp bevinden, worden verwijderd zodra het systeem wordt opgestart.

FHS heeft deze aanbeveling toegevoegd op basis van historisch precedent en gangbare praktijk, maar heeft er geen eis van gemaakt omdat systeembeheer niet binnen het bereik van deze standaard valt.

/var/tmp : Tijdelijke bestanden die tussen systeem reboots bewaard blijven

De /var/tmp directory wordt beschikbaar gesteld voor programma’s die tijdelijke bestanden of mappen nodig hebben die tussen systeem reboots bewaard blijven. Daarom zijn gegevens die in /var/tmp zijn opgeslagen, meer persistent dan gegevens in /tmp.

Bestanden en mappen die zich in /var/tmp bevinden, mogen niet worden verwijderd wanneer het systeem wordt opgestart. Hoewel gegevens die in /var/tmp zijn opgeslagen, gewoonlijk op een locatie-specifieke manier worden verwijderd, wordt aanbevolen dat verwijderingen met een minder frequent interval dan /tmp plaatsvinden.

Ook de The Open Group Base Specifications Issue 7, Environment Variables vermeldt het volgende:

TMPDIR Deze variabele moet een padnaam vertegenwoordigen van een directory die beschikbaar is gemaakt voor programma’s die een plaats nodig hebben om tijdelijke bestanden te maken.

11
11
11
2017-03-28 17:56:59 +0000

Dit is een oude vraag dus vandaag is er een andere optie beschikbaar. Linux distributies die vertrouwen op systemd (en dat is 90%) kunnen nu de $XDG_RUNTIME_DIR directory XDG Base Directory Specification ) gebruiken om bepaalde soorten tijdelijke bestanden op te slaan. Deze bevindt zich meestal op /run/user/$uid. Dit is een per-gebruiker directory met 700 permissies die een betere beveiliging biedt. Dit is een tmpfs mount die prestaties levert. Het nadeel van tmpfs is dat het alleen gebruikt zou moeten worden om kleine bestanden en sockets te bewaren.

Ik zie het als een huwelijk tussen /tmp en /var/run.

10
10
10
2011-09-06 20:13:09 +0000

Ja. /tmp is voor algemeen gebruik. Zie hier en hier Over de Bestandssysteem Hiërarchie Standaard.

/tmp/ Tijdelijke bestanden (zie ook /var/tmp). Vaak niet bewaard tussen systeem reboots.

Met wat meer details in de PDF.

2
2
2
2011-09-06 20:23:58 +0000

Je kunt niet van te voren één tijdelijke mapnaam kiezen die voor elk Linux systeem werkt. In feite kun je dat op Windows ook niet doen. Volgens Wikipedia’s artikel over tijdelijke mappen , wordt de tijdelijke map op Windows bepaald door de omgevingsvariabele TEMP. Als u gewoon c:\Temp als tijdelijke directory zou gebruiken op een Windows systeem dat TEMP op iets anders had ingesteld, dan zou elk programma dat uw XML-bestand gebruikt om een tijdelijke directory te kiezen, falen.

Kortom, de tijdelijke directory van het systeem wordt bepaald door de omgeving op alle moderne besturingssystemen die ik ken, inclusief zowel Windows als elk UNIX-achtig systeem. Het instellen van een enkel statisch pad als tijdelijke directory werkt alleen zolang de standaardinstellingen niet zijn gewijzigd.

Hoe dan ook, de standaard tijdelijke directory in een typisch Linux systeem is /tmp. Het is het equivalent van C:\Temp in de zin dat het alleen de standaard tijdelijke directory is, niet universeel. Zelfs als /tmp beschikbaar is, als een gebruiker (of het systeem) de omgevingsvariabele TEMP heeft ingesteld, moet in plaats daarvan de waarde van die variabele worden gebruikt.

Je zou kunnen proberen een tijdelijke directory te kiezen relatief aan de home directory van de gebruiker, die je kunt aanmaken.

0
0
0
2019-07-27 13:18:41 +0000

De oorspronkelijke vraag was: Heeft Linux een standaard tijdelijke directory. Zo ja, waar bevindt die zich? De tmp-map(pen) zijn te vinden op: File System/tmp & File System/var/tmp De inhoud van /tmp zou verwijderd kunnen worden - als je weet welke bestanden/mappen wel/niet vereist zijn door verschillende apps op een “as required” basis. Niet-vereiste bestanden zijn meestal de bestanden die door een app worden gedownload om de app zelf op dat moment te faciliteren- dus niet verder nodig nadat de app heeft uitgevoerd. De /var/tmp map zou helemaal niet aangeraakt moeten worden.