Identifiants uniques linux
Sous Linux il est facile de générer des identificateurs uniques.
Utilisation du temps
L'une des solution simples consiste à utiliser le temps et l'adress IP (le couple des deux étant supposé unique)
date +%s
donne le nombre de secondes écoulées depuis le 1/1/1970
date +%N
Donne le nombre de nano-secondes Donc :
date +"%s.%N"
Donne un nombre suppposé être unique sur une machine donnée à la nano-seconde près. Dans la pratique un ordinateur n'est pas capable d'être aussi précis. SI on fait une boucle on à quelque chose qui rassemble à:
1241614928.358201000 1241614928.359321000 1241614928.360353000 1241614928.361343000 ...
Mon serveur ne sait donc pas être plus précis que le 1/100 000 de seconde! Donc tant que deux appels à date +"%s.%N" ne se font pas dans la même 1/100 000 ieme de seconde ce systeme donnera des numéros uniques (sur le serveur). Ajouté a quelque chose comme hostname on obtient un identificateur unique assez satisfaisant.
date +"%s.%N@"`hostname`
Une série nous donne:
1241615350.220367000@servername 1241615350.222946000@servername 1241615350.225205000@servername 1241615350.227449000@servername ...
Méthode probabiliste
L'autre le générateur de UUID aléatoire du noyeau Linux
cat /proc/sys/kernel/random/uuid
Génère quelque chose qui ressemble à :
7decb97d-2420-4e94-8dcb-a3b58ab0bd1f 2d319de0-9209-458a-bdaf-d2cb46a50098 bc2666dd-95d2-46c6-877b-f0f289d20cd6 9d5ad845-087e-4be0-b0bd-bbd7b9b3f78e bbe63167-699d-4c29-9ba6-2d48a96383d9
Le système est supposé générer un identifiant unique mais reste "probabiliste".