2012-03-07 3 views
7

के तहत सिस्टम-व्यापी अद्वितीय आईडी कैसे उत्पन्न कर सकता हूं मैं एक मल्टीप्रोसेस लिनक्स सिस्टम पर काम कर रहा हूं और अद्वितीय आईडी उत्पन्न करने की आवश्यकता है। सुरक्षा पर विचार नहीं है, इसलिए एक आईडी जनरेटर जो शून्य से शुरू होता है और गणना करता है ठीक होगा। इसके अलावा यह सिर्फ एक स्थानीय मशीन के भीतर है, कोई नेटवर्क शामिल नहीं है। जाहिर है, इसे लागू करना मुश्किल नहीं है, लेकिन मैं बस सोच रहा था कि क्या कुछ भी पहले से उपलब्ध कराया गया था (अधिमानतः हल्का वजन)।मैं लिनक्स

उत्तर

14

इस के लिए ... एक नौकरी की तरह लगता है ... 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; 
} 
+0

उत्तर के लिए धन्यवाद। क्या ऐसी कोई चीज है जिसे आईडी को वापस करने के लिए एक नया आग लगाने की बजाए प्रक्रिया में शामिल किया जा सकता है? – gimmeamilk

+0

हां। मैंने सी ++ में एक उदाहरण के साथ अपना जवाब अपडेट कर लिया है। – Johnsyweb

+0

बहुत बहुत धन्यवाद – gimmeamilk

1

यूयूआईडी नामक कमांड लाइन टूल है जो वही करेगा जो आप चाहते हैं। मुझे यकीन नहीं है कि यह विभिन्न वितरणों में डिफ़ॉल्ट रूप से स्थापित हो जाता है, इसलिए आपको इसे स्वयं करना पड़ सकता है।

0

इसके अलावा उपयोगी ..

cat /etc/machine-id 

/etc/मशीन-आईडी फ़ाइल स्थानीय प्रणाली है कि स्थापना के दौरान सेट किया गया है की अनोखी मशीन आईडी में शामिल है। मशीन आईडी एक एकल न्यूलाइन-समाप्त, हेक्साडेसिमल, 32-वर्ण, लोअरकेस मशीन आईडी स्ट्रिंग है। हेक्साडेसिमल से डीकोड किए जाने पर, यह 16-बाइट/128-बिट स्ट्रिंग के अनुरूप होता है।

+0

मैंने एक डेबियन सिस्टम की जांच की जो कि हाथ में था और ** ** उस फ़ाइल को नहीं ढूंढ सका। –