Où se trouve le répertoire temporaire sous Linux?

63

Linux a-t-il un répertoire temporaire standard à usage général, comme le C:\Tempdossier Windows ? Si oui, où est-il situé? J'ai trouvé une question SO sur la recherche d'un tmprépertoire par programme , mais je souhaite définir un emplacement temporaire dans un fichier de configuration XML à l'avance.

Pops
la source
1
Je sais que cela semble être une question très facile, mais je n'ai pas trouvé de réponse claire et simple à la recherche. La plupart des résultats que j'ai obtenus concernaient des répertoires / fichiers temporaires spécifiques à un programme. J'ai vu plusieurs références à /tmp, mais elles étaient ambiguës quant à savoir si c'était standard pour Linux ou juste une convention commune.
Pops
5
Windows C:\Tempn'est certainement pas standard. Windows 95 avait déjà %TEMP%pointé vers C:\WINDOWS\Temp.
Grawity

Réponses:

91

La version 3.0 de la hiérarchie des systèmes de fichiers indique:

/ tmp: fichiers temporaires

Le /tmprépertoire doit être rendu disponible pour les programmes nécessitant des fichiers temporaires.

Les programmes ne doivent pas supposer que des fichiers ou des répertoires /tmpsont préservés entre les invocations du programme.

Raisonnement

La norme IEEE POSIX.1-2008 répertorie les exigences similaires à celles de la section ci-dessus. Bien que les données stockées dans /tmppuissent être supprimées d'une manière spécifique au site, il est recommandé de /tmpsupprimer les fichiers et les répertoires situés à l'emplacement initial du système.

FHS a ajouté cette recommandation sur la base d'un précédent historique et d'une pratique courante, sans toutefois en faire une exigence, car l'administration du système n'entre pas dans le champ d'application de cette norme.

/ var / tmp: fichiers temporaires conservés entre les redémarrages du système

Le /var/tmprépertoire est mis à la disposition des programmes nécessitant des fichiers temporaires ou des répertoires préservés entre les redémarrages du système. Par conséquent, les données stockées dans /var/tmpsont plus persistantes que les données /tmp.

Les fichiers et les répertoires situés dans /var/tmpne doivent pas être supprimés au démarrage du système. Bien que les données stockées dans /var/tmpsoient typiquement supprimées d'une manière spécifique au site, il est recommandé que les suppressions aient lieu à un intervalle moins fréquent que /tmp.

De plus , le La base Open Group Spécifications numéro 7, les variables d' environnement mentionne ce qui suit:

TMPDIR Cette variable doit représenter le chemin d'un répertoire mis à la disposition des programmes ayant besoin d'un emplacement pour créer des fichiers temporaires.

Cristian Ciupitu
la source
Il est difficile de discuter avec la norme. Merci!
Pops
11

C'est une vieille question donc aujourd'hui il y a une autre option disponible. Les distributions Linux reposant sur systemd(90% d'entre elles) peuvent désormais utiliser un $XDG_RUNTIME_DIRrépertoire ( XDG Base Directory Specification ) pour stocker certains types de fichiers temporaires. Il est généralement situé à /run/user/$uid. Il s’agit d’un répertoire par utilisateur doté d’ 700autorisations offrant une meilleure sécurité. Ceci est un tmpfsmontage qui offre des performances. L'inconvénient tmpfsest qu'il ne devrait être utilisé que pour conserver de petits fichiers et des sockets.

Je le considère comme un mariage de /tmpet /var/run.

oᴉɹǝɥɔ
la source
Bien sûr, la technologie s'est améliorée depuis 5 ans
mercredi
10

Oui / tmp est à usage général. Voir ici et ici sur le système de hiérarchie des systèmes de fichiers.

/ tmp / Fichiers temporaires (voir aussi / var / tmp). Souvent pas préservé entre les redémarrages du système.

Avec plus de détails énumérés dans le PDF.

Old Wolf
la source
2

Vous ne pouvez pas choisir un seul nom de répertoire temporaire à l'avance qui fonctionnera sur n'importe quel système Linux. En fait, vous ne pouvez pas le faire sous Windows non plus. Selon l' article de Wikipedia sur les dossiers temporaires , le répertoire temporaire sous Windows est déterminé par la variable d'environnement TEMP. Si vous utilisiez simplement c:\Tempun répertoire temporaire sur un système Windows pour définir TEMP sur quelque chose d'autre, tout programme utilisant votre fichier XML pour choisir un répertoire temporaire échouerait.

En bref, le répertoire temporaire du système est déterminé par l'environnement de tous les systèmes d'exploitation modernes que je connais, y compris Windows et tout système de type UNIX. La définition d’un seul chemin statique en tant que répertoire temporaire ne fonctionnera que tant que les valeurs par défaut n’ont pas été modifiées.

Quoi qu'il en soit, le répertoire temporaire standard d'un système Linux typique est /tmp. C'est l'équivalent de C:\Tempdans le sens où c'est seulement le répertoire temporaire par défaut, pas universel. Même si /tmpest disponible, si un utilisateur (ou le système) a défini la variable d'environnement TEMP, la valeur de cette variable doit être utilisée à la place.

Vous pouvez essayer de choisir un répertoire temporaire par rapport au répertoire de base de l'utilisateur, que vous pouvez créer.

Ryan Thompson
la source
Dans mon cas, je pense que l’hypothèse est sûre que les valeurs par défaut sont toujours en place, mais il est bon de garder cela à l’esprit.
Pops
Certains programmes tels que bash, gcc, inkscape ou lynx utilisent la TMPDIRvariable d'environnement.
Cristian Ciupitu
@ Ryan, Pourquoi /tmppréside la variable temporaire?
Pacerier
0

La question initiale était: Linux a-t-il un répertoire temporaire standard? Si oui, où est-il situé? Le (s) dossier (s) tmp se trouvent dans: Système de fichiers / tmp et Système de fichiers / var / tmp. Le contenu de / tmp peut être supprimé - si vous savez quels fichiers / dossiers sont requis / non requis par diverses applications sur une "selon les besoins" base. Les fichiers non requis sont généralement ceux téléchargés par une application afin de faciliter l'application elle-même à ce moment-là, donc plus nécessaire après l'exécution de l'application. Le dossier / var / tmp ne doit absolument pas être touché.

FranklynA
la source
1
Cette réponse ne fournit pas plus d'informations que la réponse acceptée, elle est donc totalement inutile.
Zx485