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