Identifiants uniques linux

De knowledge
Aller à la navigation Aller à la recherche

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".