web-dev-qa-db-fra.com

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

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

54
Pops

La norme de hiérarchie du système de fichiers version 3.0 dit:

/ tmp: fichiers temporaires

Le répertoire /tmp 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 dans /tmp sont préservés entre les invocations du programme.

Justification

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 /tmp puissent être supprimées de manière spécifique au site, il est recommandé de supprimer les fichiers et les répertoires situés dans /tmp à chaque démarrage 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 répertoire /var/tmp est rendu disponible pour les 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/tmp sont plus persistantes que celles de /tmp.

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

De plus, les Spécifications de base de groupe ouvert, numéro 7, variables d'environnement mentionnent les éléments suivants:

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

84
Cristian Ciupitu

C'est une vieille question donc aujourd'hui il y a une autre option disponible. Les distributions Linux qui utilisent systemd (soit 90% d’entre elles) peuvent désormais utiliser le répertoire $XDG_RUNTIME_DIR ( 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é des autorisations 700, qui offre une meilleure sécurité. Ceci est un montage tmpfs qui fournit des performances. L'inconvénient de tmpfs est qu'il ne devrait être utilisé que pour conserver de petits fichiers et des sockets.

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

11
oᴉɹǝɥɔ

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.

10
OldWolf

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 article sur les dossiers temporaires de Wikipedia, le répertoire temporaire sous Windows est déterminé par la variable d'environnement TEMP. Si vous utilisiez simplement c:\Temp comme répertoire temporaire sur un système Windows définissant TEMP sur un autre paramètre, tout programme utilisant votre fichier XML pour choisir un répertoire temporaire échouera.

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 dans un système Linux typique est /tmp. C'est l'équivalent de C:\Temp dans le sens où c'est seulement le répertoire temporaire par défaut, pas universel. Même si /tmp est 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.

1
Ryan Thompson