Linux

在 bash 中創建唯一的隨機數 (UUID)

  • February 8, 2022

我想創建如下的隨機唯一數字(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

引用手冊

libuuiduuidgen 程序使用(3) 庫創建(並列印)一個新的通用唯一標識符 (UUID) 。在本地系統上創建的所有 UUID 以及過去和將來在其他系統上創建的 UUID 中,可以合理地認為新的 UUID 是唯一的。

uuidgen 可以生成兩種類型的 UUID:基於時間的 UUID 和基於隨機的 UUID。預設情況下,如果存在高質量的隨機數生成器,uuidgen 將生成基於隨機的 UUID。否則,它將選擇基於時間的 UUID。可以使用-ror-t選項強制生成這兩種 UUID 類型之一。

附錄:OP 在評論中提供了Presto DB 文件的連結。經過一番搜尋,我發現了這個相關的討論,其中明確提到該node.id屬性確實是一個 UUID。


在評論中添加frostschutz提供的資訊:

作為uuidgen/libuuid方法的替代方案,您可以使用 Linux 核心本身公開的介面來生成 UUID:

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

每次請求都會重新生成 UUID。

引用自:https://unix.stackexchange.com/questions/500572