定义
uuidgen 是一个命令行程序,负责创建一个通用唯一标识符(UUID)并把它打印到标准输出[1]。它的基本调用形式为 uuidgen [options],不带参数运行时即输出一个 UUID 字符串[2]。按手册表述,这样得到的取值在本机以及过去、未来其他系统所生成的 UUID 中都可以合理视为唯一[1]。
该命令归属于 util-linux 软件包,实现上依赖 libuuid 库[1]。手册同时说明它遵循 OSF DCE 1.1 的相关约定[3]。
原理
UUID 在格式上为 128 位,文本形式写成 5 组以连字符分隔的十六进制数字,各组长度依次为 8、4、4、4、12 位。其中若干比特被固定用作版本号与变体号,其余字段的含义随版本不同而变化[4]。
uuidgen 能够生成 3 类 UUID:基于时间的、基于随机的以及基于散列的[2]。当系统提供了高质量的随机数发生器时,命令默认给出随机型值;若该条件不满足,则退回到时间型值。使用 --random 或 --time 参数可以强制指定前两类中的某一类[1]。
随机型值主要由随机比特构成,因此要求操作系统具备类似 /dev/random 的高质量随机源[2]。时间型值则以系统时钟与系统的以太网硬件地址(如存在)为基础构造[1]。第三类值需配合 --md5 或 --sha1 以及 --namespace、--name 一起使用,做法是把命名空间 UUID 与名称字符串拼接后取散列,因而结果是可以预测的[2]。命名空间既可以直接给出一个 UUID,也可以使用 RFC 4122 中定义的 @dns、@url、@oid、@x500 等别名[5]。
发展历程
该命令的手册页版权标注为 1999 年,由安德烈亚斯·迪尔格(Andreas Dilger)为 libuuid 编写,最早的手册页面向 libuuid.so.1.1 与 e2fsprogs-1.14[6]。早期版本属于 e2fsprogs 软件包中 libuuid 的一部分[7]。
早期手册只描述时间型与随机型两种 UUID,并通过 -r、-t 两个选项在两者之间切换[8]。后来的版本把可生成的类型扩展为时间型、随机型与散列型 3 种,并加入 --md5、--sha1、--namespace、--name、--hex 等选项[3]。
近期的 util-linux 版本又为该命令补充了 --time-v6 与 --time-v7 选项,用于生成按时间戳可进行字典序排序的时间型 UUID,以及 --count 选项以批量生成[1]。
应用
该命令用于在脚本或交互式环境中快速取得一个标识符,其输出可直接被其他程序通过标准输出读取[1]。在文件系统与分区管理中,UUID 常被用作设备的稳定标识;UUID 与 GUID 在概念上指同一类标识符[4]。
基于散列的类型适用于把命名空间与名称映射为固定值,手册指出这类可预测结果在把 UUID 当作更复杂取值的句柄或一次性随机数(nonce)时可能有用[2]。--count 选项借助 libuuid 对时间型 UUID 的缓存能力一次输出多个值,从而改善性能,但对其他类型没有意义[1]。
局限
随机型 UUID 仅由本机采集的随机数产生,并不具备全局唯一的保证,只是冲突概率极低[9]。当系统缺少高质量的随机数来源时,默认行为会退回到时间型,取值方式随之改变[1]。
时间型 UUID 会把节点标识写入取值中,早期做法直接使用 MAC 地址,这可能暴露主机网络接口信息;规范也指出,在虚拟机和容器普及后 MAC 地址的唯一性已不再得到保证[10]。另外,时间型所用的时间基准并非通行的纪元,且非时间有序的版本在数据库索引中局部性较差[10]。
基于 MD5 的散列类型属于可预测取值,其主要用途是向后兼容,规范不再建议在新建的 UUID 中使用[11]。同一命名空间与同一名称必然得到相同结果,这一性质在需要每次获得不同标识符的场合并不适用[5]。
参见
参考资料
- uuidgen.1.en [引用日期2026-10-14]
- uuidgen.1 [引用日期2026-10-14]
- uuidgen.1 [引用日期2026-10-14]
- ietf.org 上的网页 [引用日期2026-10-14]
- ietf.org 上的网页 [引用日期2026-10-14]
- uuidgen.1 « misc-utils - index : tools/util-linux [引用日期2026-10-14]
- Cross Reference: /external/e2fsprogs/misc/uuidgen.1.in [引用日期2026-10-14]
- index : tools/util-linux [引用日期2026-10-14]
- uuid.3ossp.en [引用日期2026-10-14]
- Universally Unique IDentifiers (UUIDs) [引用日期2026-10-14]
- dologin_pub [引用日期2026-10-14]