Как я могу генерировать уникальные идентификаторы для всей системы под Linux - PullRequest
8 голосов
/ 07 марта 2012

Я работаю в многопроцессорной системе Linux и мне нужно генерировать уникальные идентификаторы. Безопасность не имеет значения, поэтому генератор идентификаторов, который запускается с нуля и считает, будет в порядке. Кроме того, это просто внутри локальной машины, без участия сети. Очевидно, что это не сложно реализовать, но мне было просто интересно, было ли что-нибудь уже предоставлено (желательно облегченное).

Ответы [ 4 ]

18 голосов
/ 07 марта 2012

Звучит как работа для ... ... uuidgen:

% uuidgen 
975DA04B-9A5A-4816-8780-C051E37D1414

Если вы хотите встроить его в свое собственное приложение или службу, вам потребуется libuuid:

#include <uuid/uuid.h>
#include <iostream>

int main()
{
    uuid_t uu;
    uuid_generate(uu);
    char uuid[37];
    uuid_unparse(uu, uuid);
    std::cout << uuid << std::endl;
}
1 голос
/ 25 сентября 2018

В случаях, когда uuidgen не установлен, вы можете использовать mktemp .Например, для 16 символов (должно быть достаточно для получения уникальных системных идентификаторов) ...

mktemp -u XXXXXXXXXXXXXXXX

1 голос
/ 07 марта 2012

Существует инструмент командной строки под названием uuid, который будет делать именно то, что вы хотите.Я не уверен, что он устанавливается по умолчанию в различных дистрибутивах, поэтому вам, возможно, придется сделать это самостоятельно.

0 голосов
/ 06 июля 2016

Также полезно ..

 cat /etc/machine-id

Файл / etc / machine-id содержит уникальный идентификатор машины локальной системы, который устанавливается во время установки. Идентификатор машины - это одиночная шестнадцатеричная 32-символьная строчная строка идентификатора машины, оканчивающаяся новой строкой. При декодировании из шестнадцатеричного числа это соответствует 16-битной / 128-битной строке.

...