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


160

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

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

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


1
इसे देख नहीं सकते? शायद थोड़ा इंतजार करें। या किसी अन्य USB पोर्ट का प्रयास करें। देखें कि s lsusb ’में क्या अंतर है
निक

कुछ हद तक इस सवाल को फिर से समझना चाहते हैं - सभी USB डिवाइस डिस्क नहीं हैं, आखिरकार।
अरफांगियन

3
dfजहां यह रचित निर्माण शामिल था कमांड आपको पता चलता है
विल शेपर्ड

जवाबों:


83

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


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

1
दरअसल, मैंने इसे समझ लिया। मेरे अंतिम रिबूट के बाद से एक कर्नेल अपडेट था जो इस समस्या का कारण बन रहा था। एक रिबूट के बाद, मेरा यूएसबी ठीक ठीक है। उम्मीद है कि यह किसी की मदद करता है!
modulitos

54

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

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


15
संक्षिप्त और सरल:for devlink in /dev/disk/by-id/usb*; do readlink -f ${devlink}; done
फेलिप अल्केबार

54

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

mount

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


5
नहीं, यह जादुई रूप से आपके डिवाइस को माउंट नहीं करता है। आपको इसे निर्दिष्ट करना होगा mount /dev/id /mount/point, ताकि यह काम न करे।
पॉलिम

9
मेरा उत्तर उपयोगकर्ता के प्रश्न को संबोधित करता है 'क्या कोई तरीका है जो dmesg या / proc या कहीं और देखने के माध्यम से पता लगा सकता है कि कौन सा डिवाइस नोड USB ड्राइव है।' ।
लोंगयूज़रनाम

इस जवाब ने मेरे लिए लगभग समान प्रश्न हल कर दिया।
मैथ्यू ब्राउन उर्फ ​​लॉर्ड मैट

1
मुझे लगता है कि आटोमाउंट का व्यवहार डिस्ट्रो टाइप पर निर्भर करता है।
जिगगंजर

1
dfमुझे भी लगता है।
एलेक्सी

24

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

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

अपडेट करें

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

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

Udv 117 में, udevadmपेश किया गया था udevinfoऔर अन्य कार्यक्रम अनुकूलता में बदल गए थे। सिमिलिंक udv 128 में हटाए गए थे और udv 147 में अच्छे के लिए हटा दिया गया था ।


8
डेबियन में, udevinfoनाम दिया गया है udevadm
स्टीव पोमेरॉय

8
उबंटू पर, आदेश होने के लिए "udevadm जानकारी --query = सभी -n / dev / sda" लगता है
machineghost

मुझे लगता है कि उन्होंने कुछ बिंदु पर कमांड का नाम बदल दिया - जब मैंने उत्तर (उम्र पहले) लिखा था तो कमांड ने ubuntu प्रणाली पर काम किया था जिसे मैंने इसे पोस्ट किया था;)
एलेर्टिरल

उबंटू में कमान का काम अभी भी जारी है,udevadm info --query=all -n /dev/ttyUSB1
सिद्धार्थ

1
udevadm info --query=all -n /dev/ttyUSBफेडोरा में भी।
स्लम

22

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

blkid -c /dev/null

यह आपको माउंट नहीं होने पर भी सभी ब्लॉक डिवाइस के बारे में पूरी जानकारी देता है


सभी डिस्ट्रो में यह नहीं है। जो आप उपयोग कर रहे थे?
न्यू अलेक्जेंड्रिया

यह मेरे रास्पियन डिस्ट्रो पर कुछ भी नहीं करता है।
इगोरगानापोलस्की

कमांड नहीं मिली:
ब्लेकिड

Ubuntu 14.04 64-बिट पर इस कमांड से कोई आउटपुट नहीं।
gbmhunter

11

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

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

hal-device

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

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

वहाँ भी:

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

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

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

lsusb -v
lshw

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


2
/ dev / डिस्क / बाय-आईडी / * usb * बहुत मददगार है।
रोब

/ dev / डिस्क / बाय-लेबल ftw। धन्यवाद :)
ट्रिप्टिक

10
sudo fdisk -l

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


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

यह एकमात्र विकल्प था जिसने मेरे लिए ठीक काम किया। मुझे खेद है अगर यह आपके लिए काम नहीं करता है!
फेलिप

8

उपयोग

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

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

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


6

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

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"

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

2

के तहत पेड़ पर एक नज़र रखना /dev/disk। यह विभिन्न योजनाओं द्वारा डिस्क और उनके विभाजन (फाइल सिस्टम) को सूचीबद्ध करता है।


2

/ var / log / संदेश यदि dmesg की अब जानकारी नहीं है।


0

यदि आप USB ड्राइव को अनप्लग करते हैं और इसे वापस प्लग करते हैं, तो आपको इसे कर्नेल (dmesg) से इनिशियलाइज़ करना चाहिए।


0

स्टॉर्मलैश के उत्कृष्ट उत्तर के आधार पर और udv पर निर्भरता के साथ "/ देव / डिस्क / बाय-आईडी / यूएसबी" डिवाइस ट्री को पॉप्युलेट करने के लिए, आप एक विधेय (बैश) को निम्नानुसार परिभाषित कर सकते हैं:

is_usb_device() {
    local device_path=$1        # such as /dev/sdc
    for devlink in /dev/disk/by-id/usb*; do
        if [ "$(readlink -f "$devlink")" = "$device_path" ]; then
            return 0
        fi
    done
    return 1
}

और फिर इसका उपयोग करें:

if is_usb_device "/dev/sdg"; then
    echo "/dev/sdg is a usb device"
else
    echo "/dev/sdg is not a usb device"
fi
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.