Problème:
La plupart de mes scripts prennent un ou des fichiers en entrée, travaillent les données de multiples façons et donnent un ou plusieurs fichiers en sortie. Les traitements peuvent être long et complexes et nécessitent souvent plusieurs traitements à la suite. J'utilise donc des fichiers temporaires. Le problème est le nommage de ces fichiers, ainsi que leur nettoyage. Où les mettre? Dans le répertoire du (des) fichiers d'entrée, de sortie?
Solution:
Comme les autres personnes (admins) n'apprécient pas avoir des fichiers temporaires noyant les fichiers importants, j'évite absolument de mélanger les fichiers: il suffit qu'un script soit tué pour avoir des fichiers temporaires partout. Comme la petite plaquette aux toilettes l'indique: "
Vous êtes prié de laisser l'endroit aussi propre que vous l'avez trouvé en entrant", faut bien ranger après. Donc
/tmp est un bon candidat pour les fichiers temporaires. Néanmoins, si deux admins lancent le même script en même temps, il risque d'y avoir mélange de pinceaux. Voici finalement ce que j'utilise le plus souvent possible.
tmpDir=$(mktemp -d /tmp/$(basename $0).XXX)
Donc je mets tous mes fichiers temporaires dans
/tmp/<nom_script>.XXX. Le nom du script est évidemment utile pour comprendre d'où vient ce répertoire, les
XXX sont trois caractères aléatoires pour éviter les conflits entre plusieurs exécutions simultanées. Le possesseur du répertoire est celui qui a lancé le script.
Partager