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.
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.
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
.
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.