सवाल मैं कैसे पता लगा सकता हूं कि कौन सा / dev एक यूएसबी फ्लैश ड्राइव है?


मैं एक यूएसबी ड्राइव माउंट करना चाहता हूं, उनमें से दो और मुझे दो अलग-अलग माउंट पॉइंट चाहिए। दुर्भाग्यवश, लिनक्स कर्नेल ने एक नाम परिवर्तन किया और मैं इसका पता नहीं लगा सकता /dev स्थान सही है। क्या देखने का कोई तरीका है dmesg या /proc या कहीं और पता लगाने के लिए कि कौन सा डिवाइस नोड एक यूएसबी ड्राइव है।

(मैं ArchLinux का उपयोग कर रहा हूँ अगर यह किसी भी मदद करता है .../dev/sda पहली हार्ड ड्राइव है, /dev/sr0 एक डीवीडी ड्राइव है, आदि)

संपादित करें: यूएसबी ड्राइव यूएसबी हब से जुड़ा हुआ है। मैंने देखा dmesg और यह कहता है कि हब जुड़ा हुआ था और यह उससे जुड़े 3 उपकरणों के लिए स्कैन किया गया था। अभी भी नहीं देख सकता कि मेरा यूएसबी ड्राइव कहां है।


155
2017-09-16 03:51


मूल


इसे नहीं देख सकता शायद थोड़ा इंतजार करो। या एक और यूएसबी पोर्ट आज़माएं। देखें 'lsusb' में क्या अंतर है - Nick Devereaux
शायद कुछ हद तक सवाल दोबारा शुरू करना चाहते हैं - सभी यूएसबी डिवाइस डिस्क के बाद नहीं हैं। - Arafangion
df कमांड आपको दिखाता है कि इसे कहाँ रखा गया था - Will Sheppard


जवाब:


सबसे आसान तरीका: के आउटपुट को देखो dmesg यूएसबी डिवाइस को जोड़ने के बाद। यह आपको दिखाना चाहिए /dev नोड इसे सौंपा गया था।


77
2017-09-16 03:53



dmesg महान काम करता है, लेकिन मेरे पास एक मामला है dmesg दिखाता नहीं है /dev नोड: [421963.864281] usb 3-6: new high-speed USB device number 32 using xhci_hcd इसका क्या मतलब है? मैं इस डिवाइस को कैसे माउंट कर सकता हूं? डिवाइस पर दिखाया गया है lsusb... - modulitos
असल में, मैंने इसे समझ लिया। मेरे पिछले रीबूट के बाद से एक कर्नेल अद्यतन था जो इस समस्या का कारण बन रहा था। रीबूट के बाद, मेरा यूएसबी बस ठीक है। उम्मीद है कि यह किसी की मदद करता है! - modulitos


जब तक आप चल रहे हैं udev, आप इसे आसानी से संदर्भित कर सकते हैं / dev / disk / by-id / usb-उत्पादक का नाम_क्रमांक। ये प्रतीकात्मक लिंक के रूप में दिखाई देते हैं जिन्हें आप सीधे अपने fstab के भीतर संदर्भित कर सकते हैं, या जिसे आप उपयोग कर सकते हैं रीडलिंक -e संबंधित ब्लॉक डिवाइस को निर्धारित करने के लिए।

यहां एक असली दुनिया का उदाहरण है। मेरी मशीन पर, मेरे पास 3 यूएसबी हार्ड ड्राइव जुड़े हुए हैं। ये प्रत्येक अद्वितीय सीरियल नंबरों के साथ / dev / disk / by-id में दिखाए जाते हैं (हालांकि वे एक सामान्य निर्माता स्ट्रिंग साझा करते हैं)। मैंने इन तीन अद्वितीय प्रविष्टियों में से प्रत्येक के लिए प्रतीकात्मक लिंक बनाए हैं, और अब यह निर्धारित कर सकते हैं कि कौन सा ड्राइव चल रहा है (और कौन सा डिवाइस प्रत्येक ड्राइव से जुड़ा हुआ है) चलकर रीडलिंक -e linkname। उदाहरण के लिए, चल रहा है रीडलिंक -ई / रूट / डिस्क 2 मेरी मशीन पर वर्तमान में "/ Dev / SDE", जबकि रीडलिंक -ई / रूट / डिस्क 3 कोई भी उत्पादन नहीं करता है।


53
2017-09-16 19:29



छोटा और सरल: for devlink in /dev/disk/by-id/usb*; do readlink -f ${devlink}; done - Felipe Alcacibar


ये सभी अच्छे सुझाव हैं, लेकिन सबसे तेज़ और कम से कम वर्बोज़ विधि केवल टर्मिनल में निम्न टाइप करना है:

mount

जो सभी घुड़सवार उपकरणों की एक सूची देगा (यह मानता है कि यूएसबी ड्राइव घुड़सवार है, जो आम तौर पर आधुनिक लिनक्स distros के मामले में है)।


51
2017-09-04 18:51



नहीं, यह आपके डिवाइस को जादुई रूप से माउंट नहीं करता है। आपको इसे निर्दिष्ट करना होगा mount /dev/id /mount/point, तो यह काम नहीं करता है। - polym
मेरा जवाब उपयोगकर्ता के प्रश्न को संबोधित करता है 'क्या यह पता लगाने के लिए कि कौन सा डिवाइस नोड एक यूएसबी ड्राइव है, dmesg या / proc या कहीं और देखने के लिए कोई तरीका है।', और लिनक्स के तहत ड्राइव को बढ़ाने की व्यावहारिकता पर मार्गदर्शन प्रदान करने का इरादा नहीं है । - AnotherLongUsername
इस जवाब ने मेरे लिए लगभग एक समान प्रश्न हल किया। - Matthew Brown aka Lord Matt
मुझे लगता है कि स्वभाव व्यवहार डिस्ट्रो प्रकार पर निर्भर करता है। - jiggunjer
df भी, मुझे लगता है। - Alexey


आदेश आज़माएं udevinfo -q all -n /dev/sda, कहा पे /dev/sda आपकी डिस्क का मार्ग है। यह आपको उस डिस्क के बारे में जानकारी का बोतलबंद देता है जिसे आप देख रहे हैं - एक प्रविष्टि है जो आपको बस के बारे में बताती है।

यह निश्चित रूप से आपको dmesg और / या लॉग के माध्यम से grep होने से बचाता है।

अद्यतन करें 

udevadm info --query=all -n /dev/sda 

कम से कम जुलाई 2010 से [1]  udevinfo डेबियन (और व्युत्पन्न) में प्रतिस्थापित किया गया था udevadm info थोड़ा क्षणिक जिसके साथ सिम्लिंक जल्द ही बहिष्कृत और हटा दिए गए थे (आप अभी भी उन्हें पुरानी अद्यतन मशीन में नहीं पा सकते हैं)। हमेशा से [1] हम पढ़ सकते हैं:

Udev 117 में, udevadm पेश किया गया था और udevinfo और अन्य कार्यक्रम संगतता symlinks में बदल गया। सिम्लिंक को बहिष्कृत किया गया था udev 128 और अच्छे में हटा दिया udev 147


24
2017-09-16 03:59



डेबियन में, udevinfo का नाम बदला गया है udevadm। - Steve Pomeroy
उबंटू पर, आदेश "udevadm जानकारी --query = all -n / dev / sda" प्रतीत होता है - machineghost
मुझे लगता है कि उन्होंने किसी बिंदु पर कमांड का नाम बदल दिया - जब मैंने जवाब लिखा (उम्र पहले) कमांड ने उबंटू सिस्टम पर काम किया था जिसे मैंने इसे पोस्ट किया था;) - Eltariel
कमान अभी भी उबंटू में काम करता है, udevadm info --query=all -n /dev/ttyUSB1 - Siddharth
udevadm info --query=all -n /dev/ttyUSB फेडोरा में भी। - slm


क्या चल रहा है यह देखने का सबसे आसान तरीका बस टाइप करना है (पाठ्यक्रम की जड़ के रूप में):

blkid -c /dev/null

यह आपको सभी ब्लॉक उपकरणों के बारे में एक पूर्ण अवलोकन देता है भले ही घुड़सवार न हो


23
2018-01-02 08:37



सभी distro यह नहीं है। आप किसका उपयोग कर रहे थे? - New Alexandria
यह मेरे रास्पियन डिस्ट्रो पर कुछ भी आउटपुट नहीं करता है। - Igor G.
आदेश नहीं मिला: ब्लिकिड - Igor G.
उबंटू 14.04 64-बिट पर इस कमांड से कोई आउटपुट नहीं। - gbmhunter


/dev/disk/by-* इस मामले में सबसे आसान तरीका है, अगर किसी कारण से आप जीवन को और अधिक रोचक बनाना चाहते हैं तो आप एचएएल का उपयोग कर सकते हैं।

आपके द्वारा उपयोग किए जाने वाले सभी उपकरणों को सूचीबद्ध करने के लिए:

hal-device

एक विशिष्ट संपत्ति प्राप्त करने के लिए आप इसका उपयोग करेंगे (यह वापस आ जाएगा /dev/sd* यूएसबी स्टोरेज डिवाइस पर):

hal-get-property --udi $UDI --key block.device

वहाँ भी:

hal-find-by-capability
hal-find-by-property

यदि आप इसे और भी जटिल बनाना चाहते हैं तो आप अपेक्षाकृत आसानी से लिख सकते हैं एचएएल आधारित ऑटो माउंटर, यदि आप पूरी तरह से चीजों को स्वचालित करना चाहते हैं तो यह काफी आसान हो सकता है।

और सिर्फ पूर्णता के लिए भी हैं:

lsusb -v
lshw

जो सामान्य रूप से यूएसबी और आपके हार्डवेयर के बारे में कुछ सामान्य जानकारी प्रदान करता है।


11
2017-09-24 22:36



/ dev / disk / by-id / * usb * बहुत उपयोगी है। - Rob
/ dev / disk / by-label ftw। धन्यवाद :) - Triptych


sudo fdisk -l

और बस परिणाम का विश्लेषण करें।


8
2017-11-10 02:47



fdisk मैन पेज "अगर कोई डिवाइस नहीं दिया जाता है, तो जो / proc / विभाजन (यदि मौजूद है) में उल्लिखित हैं।" Fdisk चलाना एक विकल्प नहीं हो सकता है ... मुझे पता है कि एक डेबियन सिस्टम के आधार पर यह स्थापित नहीं है, मेरा अनुमान है कि कुछ जीपीटी सिस्टम अनियंत्रित सॉफ़्टवेयर स्थापित नहीं कर सकते हैं। फिर भी, जांच / proc / विभाजन एक विकल्प होना चाहिए। - TOOGAM
यह एकमात्र विकल्प था जो मेरे लिए ठीक काम करता था। मुझे खेद है अगर यह आपके लिए काम नहीं करता है! - Felipe


उपयोग

ls -l /dev/disk/by-id/usb*

डिफ़ॉल्ट udev नियमों के तहत, जो आपको अधिक यूएसबी डिवाइस दिखाएगा और यह आपको सिस्टम पर उनके ब्लॉक-डिवाइस नाम पर सिम्लिंक दिखाएगा।

अगर यह काम नहीं करता है, तो देखो /dev/disk/by-id/ सीधे।


8
2017-09-16 04:18





यूएसबी उपकरणों के लिए आप बस कर सकते हैं

REMOVABLE_DRIVES=""
for _device in /sys/block/*/device; do
    if echo $(readlink -f "$_device")|egrep -q "usb"; then
        _disk=$(echo "$_device" | cut -f4 -d/)
        REMOVABLE_DRIVES="$REMOVABLE_DRIVES $_disk"
    fi
done
echo Removable drives found: "$REMOVABLE_DRIVES"

6
2017-08-24 17:37



+1। स्वचालित रूप से कार्य करने के लिए सरल और संक्षिप्त लिपि। - leesei