octobre
2006
Quel admin système n’a jamais eu besoin de créer des fichiers temporaires dans ses scripts Shell ? Et ce n’est pas toujours facile, surtout quand ils doivent être créés en masse ou par un grand nombre d’instances du même script.
Voici quelques méthodes que j’ai eu à utiliser.
Nom unique
Le nom du script (variable $0
) ou son numéro de processus (variable $$
) fournissent des données uniques spécifiques au script en cours.
Exemple : $FILE=/tmp/`basename $0`.$$.tmp
Le condensat MD5 du script en cours peut aussi fournir une telle information.
Exemple : md5sum $0 | cut -d" " -f1
La date au format timestamp fourni une donnée unique toutes les secondes.
Exemple : date +%s
Mais cette donnée de varie pas suffisement dans le temps pour un usage intensif dans une boucle.
Un compteur dans le script permet de forger un identifiant unique à chaque pas dans une boucle.
Nom aléatoire
La commande mktemp
créé un fichier et fourni dans la sortie standard son nom. Formé par défaut comme suit : /tmp/tmp.LNfRsC6529
Exemple : mktemp /tmp/appli.XXXXXXXX
Les périphériques /dev/random
(non bloquant) et /dev/urandom
(plus efficace mais bloquant et plus long) fournissent des données aléatoires. Ces données peuvent servir à la création de noms de fichiers.
Exemple : dd if=/dev/urandom of=/var/random-seed count=1
Le fichier random-seed peut être splité (split
) en de nombreux petits fichiers dont on calcule le condensat MD5 afin de créer massivement des noms de fichiers.
La commande uuidgen
génère une chaîne aléatoire au format UUID (Universally Unique ID), elle peut être considéré comme unique. Exemple d’UUID : 4abb6101-46ef-40b7-b951-eb5081a41306.
Exemple : uuidgen -r
3 Commentaires + Ajouter un commentaire
Articles récents
- Baisse de prix drastique de la caméra LDLC Touch C1 mais chers accessoires
- Test vidéo de la caméra LDLC Touch C1 et son caisson étanche en plongée : ATTENTION A LA CASSE !
- Test du port HDMI de la caméra LDLC Touch C1
- Test de l’application LDLC Touch pour la caméra sportive LDLC Touch C1
- Mise à jour du firmware de la caméra LDLC Touch C1
Commentaires récents
Archives
- juillet 2014
- juin 2014
- janvier 2014
- décembre 2013
- novembre 2013
- octobre 2013
- février 2008
- janvier 2008
- août 2007
- avril 2007
- novembre 2006
- octobre 2006
- septembre 2006
- août 2006
- juillet 2006
- juin 2006
- mai 2006
- avril 2006
- mars 2006
- février 2006
- janvier 2006
- décembre 2005
- octobre 2005
- septembre 2005
- juin 2005
- avril 2005
- février 2005
Merci pour ces petites idées, comme le md5 ou uuidgen par exemple!
effectivement, autant pour moi
c’est corrigé
[quote]Le nom du script (variable $$) ou son numéro de processus (variable $0)[/quote]
Je crois que tu as inversé : [quote]Le nom du script (variable $0) ou son numéro de processus (variable $$)[/quote]
Sinon très intéressant !