次のようにランダムな一意の番号(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
Linuxでは、util-linux
/util-linux-ng
パッケージはUUIDを生成するコマンドuuidgen
を提供します。
$ uuidgen
5528f550-6559-4d61-9054-efb5a16a4de0
manual を引用するには:
Uuidgenプログラムは、
libuuid
(3)ライブラリを使用して、新しい汎用一意識別子(UUID)を作成(および出力)します。新しいUUIDは、ローカルシステムで作成されたすべてのUUIDの間、および過去と将来に他のシステムで作成されたUUIDの間で合理的に一意であると見なすことができます。Uuidgenが生成できるUUIDには、時間ベースのUUIDとランダムベースのUUIDの2つのタイプがあります。高品質の乱数ジェネレータが存在する場合、デフォルトでuuidgenはランダムベースのUUIDを生成します。それ以外の場合は、時間ベースのUUIDを選択します。
-r
または-t
オプションを使用して、これら2つのUUIDタイプのいずれかを強制的に生成することが可能です。
補遺:OPはコメントに Presto DBのドキュメント へのリンクを提供していました。少し検索したところ、 この関連ディスカッション が見つかりました。ここで、node.id
プロパティは確かにUUIDであることが明示的に言及されています。
Frostschutzによって提供された情報をコメントに追加します。
uuidgen
/libuuid
アプローチの代わりに、Linuxカーネル自体によって公開されているインターフェースを使用してUUIDを生成できます。
$ cat /proc/sys/kernel/random/uuid
00db2531-365c-415c-86f7-503a35fafa58
UUIDはリクエストごとに再生成されます。