跳到主要内容

使用 uuidgen 生成唯一标识符

1. 什么是 uuidgen?​

uuidgen 是一个用于生成通用唯一标识符(UUID)的命令行工具,UUID 通常用于标识信息,例如数据库记录、网络节点或其他资源。🎉 UUID 的格式通常是由32个字符组成的一串字符串,分为5组,以连字符分隔,例如:

text
550e8400-e29b-41d4-a716-446655440000
UUID格式

UUID结构:xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx

  • x:16进制数字,M:版本(1-5),N:变体

版本区别:1(基于时间)、2(DCE安全)、3(MD5哈希)、4(随机)、5(SHA-1哈希)
变体:0(NTP)、2(RFC 4122)、6(微软)、e(保留)

2. 如何安装 uuidgen​

在大多数 Linux 系统中,uuidgen 是预装的。如果没有,可以通过以下命令安装:

2.1 Debian/Ubuntu 系列:​

bash
sudo apt update
sudo apt install uuid-runtime

2.2 CentOS/Fedora 系列:​

bash
sudo yum install util-linux

2.3 Arch Linux:​

bash
sudo pacman -S util-linux

3. 使用方法​

bash
# uuidgen 命令帮助信息

# 用法:
# uuidgen [选项]
# 创建一个新的 UUID 值。

# 选项列表:
-r, --random # 生成基于随机数的 UUID(默认方式)。
-t, --time # 生成基于时间的 UUID。
-n, --namespace ns # 在指定的命名空间中生成基于哈希的 UUID。
# 可用的命名空间包括:@dns @url @oid @x500。
-N, --name name # 使用指定名称生成基于哈希的 UUID。
-m, --md5 # 使用 MD5 算法生成哈希 UUID(需结合 -n 和 -N)。
-s, --sha1 # 使用 SHA-1 算法生成哈希 UUID(需结合 -n 和 -N)。
-x, --hex # 将名称解释为十六进制字符串。

-h, --help # 显示帮助信息。
-V, --version # 显示 uuidgen 命令的版本信息。

# 详细说明请参考 uuidgen(1) 的手册页。

注意

不同版本的 UUID 默认生成方式不同,可用参数指定生成方式。

3.1 生成一个随机的 UUID​

bash
$ uuidgen -r
f47ac10b-58cc-4372-a567-0e02b2c3d479
  • 版本:4(随机UUID)
  • 变体:微软(1010)
  • 信息:
    • 随机生成,提供高隐私性和不可预测性。
    • 不包含时间戳、机器ID或位置信息。
    • 理论上全局唯一。

3.2 生成基于时间的 UUID​

您可以使用 -t 参数生成基于时间的 UUID:

bash
$ uuidgen -t
6ba7b810-9dad-11d1-80b4-00c04fd430c8
观察区别

使用 watch 命令可以帮我们看见每次生成 UUID 的不同。

4. 使用场景​

场景说明
数据库记录主键通过 UUID 生成唯一的主键,避免冲突。
文件名生成使用 UUID 创建唯一的文件名,防止重复。
网络节点标识为网络中的设备分配唯一的 UUID 作为节点 ID。
分布式系统在分布式系统中,UUID 常用于标识不同行中的数据。

5. 常见问题​

5.1 为什么生成的 UUID 是随机的?​

UUID 默认基于随机数生成,确保唯一性。如果需要顺序性,可以使用基于时间的 UUID。

5.2 UUID 是否可能重复?​

理论上,UUID 的重复概率极低(接近不可能),即使在全球范围内使用。

总结​

希望这篇教程让你轻松掌握了如何使用 uuidgen 生成唯一的 UUID!🎯 如果觉得有帮助,记得收藏 在线知识库 哦!😊