web-dev-qa-db-fra.com

Combien de temps les fichiers temporaires sont-ils réalisés avec MKTemp dernier?

Je me demandais à quel point les fichiers temporaires de Temp créés avec MKTemp dernier. Il me semble étrange de fier un fichier qui pourrait disparaître à tout moment. Je suis sur Ubuntu, si cela compte.

20
MYV

Hein? De man mktemp:

DESCRIPTION
   Create  a  temporary  file  or directory, safely, and
   print its name.  TEMPLATE must  contain  at  least  3
   consecutive  `X's  in last component.  If TEMPLATE is
   not specified, use tmp.XXXXXXXXXX,  and  --tmpdir  is
   implied.   Files  are  created  u+rw, and directories
   u+rwx, minus umask restrictions.

mktemp ajoute simplement une chaîne aléatoire pour créer un nom de fichier unique. Personne ne va le supprimer automatiquement.


Comme il semble y avoir un peu d'argumentation, laisse entrer dans certains détails. mktemp 's man's Page indique que

si le modèle n'est pas spécifié, --tmpdir est supposé que si --tmpdir n'est pas spécifié, /tmp est assumé.

Cela signifie que simplement exécuter mktemp créera un fichier appelé tmp.RANDOM_STRINGDans le répertoire/TMP. Alors oui, exécutant mktemp _ sans paramètres créera un fichier qui sera effacé avec tout le reste de /tmp de manière dépendante du système. Pour de tels fichiers, le $TMPTIME La variable sera importante comme expliquée dans la réponse de Chris ci-dessous. Pour de nombreuses distributions, la valeur par défaut est Effacement /tmp chaque démarrage parce que $TMPTIME est réglé sur 0. Dans la plupart des distributions (sinon toutes), ceci est défini dans le fichier /etc/default/rcS:

$ grep TMPTIME /etc/default/rcS
TMPTIME=0

Maintenant, si vous do Spécifiez un modèle, par exemple mktemp fooXXX Ensuite, un fichier appelé fooXXX est créé dans le répertoire actuel où XXX est remplacé par trois caractères aléatoires. Ce fichier ne sera jamais supprimé que si vous avez choisi spécifiquement de le faire. uniquement des fichiers dans les répertoires temporaires "officiels" tels que /tmp Sont toujours supprimés par le système, il n'y a pas de bit magique que vous pouvez définir qui spécifie un fichier temparatoire, des fichiers extérieurs /tmp et son ILK ne sont pas supprimés automatiquement.

Pour répondre à votre question principale, il est évident qu'il est étrange de dépendre d'un fichier qui peut disparaître, c'est pourquoi les gens ne dépendent pas des fichiers TMP, ils sont créés pour tenir temporairement des données et nous pouvons alors les oublier. Il existe de nombreuses façons de créer un fichier persistant et nommé aléatoirement. Par exemple:

echo "foo" > $RANDOM.txt
echo "foo" > `mktemp fooXXX.txt`
echo "foo" > $$.txt
17
terdon