2012-03-07 6 views
7

Tôi đang làm việc trên một hệ thống đa xử lý Linux và cần tạo ID duy nhất. An ninh không phải là một xem xét, do đó, một máy phát điện ID bắt đầu từ số không và đếm lên sẽ là tốt. Ngoài ra nó chỉ trong một máy địa phương, không có mạng lưới liên quan. Rõ ràng nó không khó để thực hiện điều này, nhưng tôi đã chỉ tự hỏi nếu có bất cứ điều gì đã được cung cấp (tốt nhẹ).Làm cách nào để tạo ID duy nhất trên toàn hệ thống trong Linux

Trả lời

14

này nghe có vẻ như một công việc cho ... ... uuidgen:

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

Nếu bạn muốn xây dựng nó vào ứng dụng hoặc dịch vụ của riêng bạn, bạn sẽ cần 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; 
} 
+0

Cảm ơn bạn đã trả lời. Có bất cứ điều gì có thể được gọi trong một quá trình, thay vì phải cháy lên một cái mới chỉ để trả lại id? – gimmeamilk

+0

Có. Tôi đã cập nhật câu trả lời của tôi với một ví dụ trong C++. – Johnsyweb

+0

cảm ơn rất nhiều – gimmeamilk

1

Có một công cụ dòng lệnh gọi là uuid sẽ thực hiện chính xác những gì bạn muốn. Tôi không chắc chắn nếu nó được cài đặt theo mặc định trong phân phối khác nhau mặc dù, vì vậy bạn có thể phải làm điều đó cho mình.

0

Cũng hữu ích ..

cat /etc/machine-id 

/etc/máy-id tập tin chứa các máy ID duy nhất của hệ thống địa phương được thiết lập trong khi cài đặt. ID máy là một chuỗi ID máy chữ thường, kết thúc thập lục phân, 32 ký tự, dòng đơn. Khi được giải mã từ hệ thập lục phân, điều này tương ứng với chuỗi 16 byte/128 bit.

+0

Tôi đã kiểm tra hệ thống Debian đã có trong tay và ** không thể tìm thấy tệp đó. –