Bashでの固有乱数(UUID)の生成

Bashでの固有乱数(UUID)の生成

以下のようにランダムな固有番号(UUID)を作成したいと思います。

node.id=ffffffff-ffff-ffff-ffff-ffffffffffff

最初はこれを試しました。

$ rndnum=` echo $RANDOM"-"echo $RANDOM"-"echo $RANDOM"-"echo $RANDOM"-"echo $RANDOM`

$ echo $rndnum
30380-echo 21875-echo 14791-echo 32193-echo 11503

次を生成する正しい方法は何ですか(f数値を含む)?

ffffffff-ffff-ffff-ffff-ffffffffffff

ベストアンサー1

Linuxでは、util-linux/util-linux-ngパッケージはUUIDを生成するためのコマンドを提供しますuuidgen

$ uuidgen
5528f550-6559-4d61-9054-efb5a16a4de0

引用する手動:

uuidgenプログラムは、(3)ライブラリを使用してlibuuid新しいUUID(Universally Unique Identifier)を作成(および印刷)します。新しいUUIDは、過去および将来の他のシステムで生成されたUUIDだけでなく、ローカルシステムで生成されたすべてのUUIDの中で一意であると合理的に見なすことができます。

uuidgenは、時間ベースのUUIDとランダムベースのUUIDの2種類のUUIDを生成できます。デフォルトでは、uuidgenは高品質の乱数ジェネレータが利用可能な場合はランダムベースのUUIDを生成します。それ以外の場合は、時間ベースのUUIDを選択します。-rまたは、オプションを使用して両方の-tUUIDタイプのいずれかを強制的に生成できます。

付録:OPはコメントへのリンクを提供しました。Presto DB ドキュメント。いくつかの検索の最後に見つかったこの関連議論node.idプロパティが実際にUUIDであることを明確に言及します。


コメントにFrostschutzが提供する情報を追加します。

uuidgen/メソッドの代わりに、libuuidLinuxカーネル自体が公開するインターフェースを利用してUUIDを作成できます。

$ cat /proc/sys/kernel/random/uuid
00db2531-365c-415c-86f7-503a35fafa58

UUID は要求ごとに再生成されます。

おすすめ記事