यदि मैं एक भौतिक उपकरण कनेक्ट करता हूं, तो मैं कभी भी यह कैसे जान सकता हूं कि यह किस डिवाइस की फ़ाइल है?


13

कहो कि मैं कई USB ड्राइव में प्लग करता हूं जो स्वचालित रूप से माउंट नहीं होते हैं। मैं कैसे पता लगा सकता हूं कि कौन सी डिवाइस फाइल किस भौतिक उपकरण से संबंधित है, इसलिए मैं इसे उदाहरण के लिए माउंट कर सकता हूं।

मैं मैक ओएस एक्स चला रहा हूं, लेकिन मुझे एक जवाब पसंद है जो सभी (या कम से कम सबसे लोकप्रिय) यूनिक्स सिस्टम पर काम करता है। मुझे अतीत में लिनक्स के साथ यह समस्या थी।



MacOSX पर सबसे सरल है उनके लेबल द्वारा वॉल्यूम की पहचान करना। लेकिन गाइल्स के पास सही समाधान के बारे में सही है।
पीटर - मोनिका

जवाबों:


14

Udv का उपयोग करना:

आप उपयोगी जानकारी क्वेरी कर सकते हैं udev(इसका उपयोग करने वाले सिस्टम पर - सुनिश्चित करने के लिए लगभग सभी डेस्कटॉप-प्रकार के लिनक्स)। उदाहरण के लिए, यदि आप जानना चाहते हैं कि कौन सी संलग्न ड्राइव से जुड़ी है /dev/sdb, तो आप इसका उपयोग कर सकते हैं:

udevadm info --query=property --name=sdb

यह आपको सीरियल (ID_SERIAL_SHORT) सहित उस डिवाइस के गुणों की एक सूची दिखाएगा। उस जानकारी के बाद, आप lsusb -vनिर्माता और उत्पाद के नाम जैसी चीजों का उत्पादन देख सकते हैं और पता लगा सकते हैं।

ऐसा करने के लिए एक छोटा रास्ता होगा

udevadm info --query=property --name=sdb | grep "\(MODEL_ID\|VENDOR_ID\)"

और $ID_VENDOR_ID:$ID_MODEL_IDबहुत छोटे आउटपुट में मिलान के साथ लाइन देखें lsusb

एक और उपयोगी विकल्प है udevadm monitor। यदि आप यह जानना चाहते हैं कि डिवाइस को संलग्न करने के बिंदु पर कौन सा डिवाइस नोड बनाया गया है । तो पहले दौड़ो

 udevadm monitor --udev --subsystem-match=block

और फिर डिवाइस को कनेक्ट करें। आपको प्रत्येक आउटपुट लाइन के अंत में छपे हुए ब्लॉक डिवाइस (डिस्क / विभाजन) के डिवाइस के नाम दिखाई देंगे।

एक व्यावहारिक उदाहरण खोल समारोह:

यहां एक समारोह है जिसे आप अपने .bashrc(या .zshrc) में डाल सकते हैं :

सूचीबोधक () 
{
    [["x $ 1" == "xv"]] && शिफ्ट && स्थानीय VERBOSE = -v
    $ dsk में {@ - / dev / sd? "
    कर
        / sbin / udevadm जानकारी --query = path --name = "$ dsk" | grep - रंग = ऑटो -q usb || जारी रखें
        इको "===== डिवाइस $ dsk है:"
        (eval $ (/ sbin / udevadm जानकारी --query = property --name = "$ dsk" | grep "\ (MODEL \ | VENDOR \) _ ID"
          ["$ ID_VENDOR_ID: $ ID_MODEL_ID" == ":"] "&& प्रतिध्वनि" अज्ञात "|| \
            lsusb $ VERBOSE -d "$ ID_VENDOR_ID: $ ID_MODEL_ID"
        )
        grep -q "$ dsk" / proc / mounts && इको "----- DEVICE IS MOUNT ----"
        गूंज
    किया हुआ
}

इसे इस तरह उपयोग करें:

  • listusbdisks- सभी /dev/sdxउपकरणों को पहचानने के लिए ;
  • listusbdisks sdbया listusbdisks /dev/sdbया listusbdisks sdb sdc- कुछ उपकरणों के बारे में जानकारी प्राप्त करने का एकमात्र;
  • listusbdisks -v [optional devices as above] - क्रिया आउटपुट दिखाने के लिए lsusb

[संपादित करें]: कई उपकरणों को क्वेरी करने, आरोह की जाँच करने और क्रिया की नियंत्रण क्षमता जैसी कुछ कार्यक्षमता जोड़ी गई lsusb


यह जहां तक ​​जाता है, सही है, लेकिन सभी सिस्टम उपयोग नहीं करते हैं udev
कालेब

@ कालेब सच ... दरअसल, lsusbएक वैकल्पिक कार्यक्रम भी है। लेकिन दोनों बेहद आम हैं।
रोजीसेट्रेजियाकज

@rozcietrzewiacz सवाल मुख्य रूप से OSX के बारे में है, लेकिन udev आंतरिक रूप से लिनक्स के लिए विशिष्ट है।
गिलेस एसओ- बुराई को रोकना '

@ गिल वेल, सच। मुझे OSX के साथ कोई अनुभव नहीं है, इसलिए मैंने सिर्फ भ्रामक नहीं होने के लिए अपना जवाब अपडेट किया।
रोजस्कीरेज़िविज़ेज़

मैं आमतौर पर ऐसे मामले में क्या करता हूं, मैं डिवाइस को प्लग इन करता हूं और तुरंत चलाता हूं dmesg। यदि डिवाइस पहले से प्लग किया गया है और पहले एक के बाद अधिक डिवाइस प्लग किए गए हैं तो यह मददगार नहीं होगा। :)
अभिषेक ए

3

कोई सार्वभौमिक उत्तर नहीं है। लिनक्स पर सबसे सरल तरीका शायद सिर्फ सूक्ति डिस्क उपयोगिता को आग देना है और यह सभी पता लगाए गए डिस्क दिखाएगा, चाहे वे माउंट किए गए हों या नहीं। कमांड लाइन से, आप blkidया के आउटपुट से परामर्श कर सकते हैं udevadm info --export-db


3

Mac OS X में आप उपयोग करने का प्रयास कर सकते हैं diskutil list


1

सभी यूनिक्स के संबंध में, मुझे नहीं लगता कि यह संभव है।

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

निर्माता के नाम किसी दिए गए मशीन पर आवश्यक रूप से अद्वितीय नहीं हैं (मान लीजिए कि आप एक ही श्रृंखला से दो बाहरी ड्राइव कनेक्ट करते हैं - वे समान रूप से पहचान करेंगे)। सीरियल नंबर "बाहर से दिखाई नहीं देते हैं", जैसा कि विभाजन यूआईडी हैं।

इसलिए, एकमात्र सार्वभौमिक समाधान के बारे में मैं सोच सकता हूं कि सीरियल नंबर के साथ भौतिक ड्राइव को लेबल करना और यूडीडीवी उपलब्ध होने पर, rozcietrzewiacz के उत्तर में दिए गए udvadm कमांड का उपयोग करना है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.