USB flash sürücüden hangisinin / dev olduğunu nasıl bulabilirim?


160

İkisini bir USB sürücü takmak istiyorum ve iki farklı bağlantı noktasına ihtiyacım var. Ne yazık ki, Linux çekirdeğinde bir isim değişikliği yapıldı ve hangi /devyerin doğru yer olduğunu bulamıyorum. Bakmak için bir yol var mı dmesgyoksa /procUSB sürücü olan cihaz düğümü öğrenmek için veya başka bir yere.

(Bu yardımcı olursa ... ArchLinux kullanıyorum ... /dev/sdailk sabit sürücü, /dev/sr0bir dvd sürücü vb.)

düzenleme: USB sürücü bir USB hub'ına bağlı. Baktım dmesgve merkeze bağlı olduğunu ve kendisine bağlı 3 cihazı taradığını söyledi. USB sürücümün nerede olduğunu hala göremiyorum.


1
Göremiyor musun? Belki biraz bekle. Veya başka bir USB portu deneyin. 'Lsusb' içinde ne gibi farklılıklar olduğunu görün
Nick Devereaux

Bu soruyu bir şekilde tekrarlamak isteyebilir - sonuçta tüm usb aygıtları disk değildir.
Arafangion

3
dfO monte nerede komutu gösterir
Will Sheppard

Yanıtlar:


83

En kolay yol: dmesgUSB cihazını bağladıktan sonra çıkışına bakın . Size hangi /devdüğümün atandığını göstermelidir.


2
dmesgharika çalışıyor, fakat düğümü dmesggöstermeyen bir durum var /dev: [421963.864281] usb 3-6: new high-speed USB device number 32 using xhci_hcdBu ne anlama geliyor? Bu cihazı nasıl monte edebilirim? Cihaz şu an lsusb...
modulitos

1
Aslında ben anladım. Bu soruna neden olan son yeniden başlatmamdan beri bir çekirdek güncellemesi yapıldı. Yeniden başlattıktan sonra, usb'im bağlanıyor. Umarım bu birine yardımcı olur!
modulitos

54

Sürece çalışan olarak udev'i , Söz ettiğiniz / dev / disk / by-id / USB-tarafından kolayca yapabilirsiniz ManufacturerName _ Seri no . Bunlar, fstab'inizde doğrudan başvuruda bulunabileceğiniz veya ilişkili blok cihazını belirlemek için readlink -e komutunu kullanarak düzenlemeyi kaldırabileceğiniz sembolik bağlantılar olarak görünür .

İşte gerçek bir dünya örneği. Makinemde bağlı 3 adet USB sabit sürücü var. Her biri benzersiz bir seri numaralarıyla / dev / disk / by-id içinde (ortak bir üretici dizesini paylaşmalarına rağmen) gösterilir. Bu üç benzersiz girişin her birine sembolik bağlantılar oluşturdum ve artık readlink -e linkname komutunu çalıştırarak hangi sürücünün hangisinin (ve hangi sürücüyle ilişkili olduğunu) hızlı bir şekilde belirleyebiliyorum . Örneğin, makinemde readlink -e / root / disk2 çalıştırmak şu anda " / dev / sde " görüntülerken, readlink -e / root / disk3 hiç bir çıktı vermiyor .


15
Kısa ve basit:for devlink in /dev/disk/by-id/usb*; do readlink -f ${devlink}; done
Felipe Alcacibar

54

Bunların hepsi iyi önerilerdir, ancak en hızlı ve en ayrıntılı yöntem, aşağıdakileri terminalde yazmaktır:

mount

tüm monte edilmiş cihazların bir listesini verecektir (bu, genellikle modern Linux dağıtımlarında olduğu gibi USB sürücünün monte edildiği varsayılmaktadır).


5
Hayır, cihazınızı sihirli bir şekilde monte etmiyor. Bunu belirtmeniz gerekir mount /dev/id /mount/point, böylece işe yaramaz.
polim

9
Cevabım kullanıcının 'dmesg veya / proc veya başka bir yere bakmak için hangi aygıt düğümünün bir USB sürücüsü olduğunu bulmak için bir yolu var mı?' Sorusunu ele alıyor ve Linux altında bir sürücüyü monte etmenin pratikliği konusunda rehberlik sağlamayı amaçlamıyor .
AnotherLongUsername

Bu cevap benim için neredeyse aynı bir soruyu çözdü.
Matthew Brown aka Lord Matt,

1
Ben otomatik sayı davranışı dağıtım türüne çok bağlı olduğunu düşünüyorum.
jiggunjer

1
dfben de öyle düşünüyorum.
Alexey,

24

Komutu deneyin, diske giden yol udevinfo -q all -n /dev/sdanerede /dev/sda. Bu size bakmakta olduğunuz disk hakkında ayrıntılı bilgi verir - size bağlı olduğu otobüsü anlatan bir giriş var.

Bu, elbette sizi dmesg ve / veya loglardan geçirmenizden kurtarır.

Güncelleme

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

En azından Temmuz 2010'dan itibaren [ 1 ] udevinfo Debian'da değiştirildi (ve türetildi), udevadm infokısa süre sonra itiraz edilip kaldırıldığı ve geçici olarak kaldırıldığı (geçici olarak güncellenmemiş makinede bulabilirsiniz), geçici bir süre ile değiştirildi. Her zaman [ 1 ] ' den okuyabiliriz:

Udev 117'de udevadmtanıtıldı udevinfove diğer programlar uyumluluk semboliklerine dönüştü. Sembolik bağların kullanımdan kaldırılmış edildi udev 128 ve iyiliği için kaldırılmıştır udev 147 .


8
Debian'da udevinfoyeniden adlandırıldı udevadm.
Steve Pomeroy

8
Ubuntu'da, komut "udevadm bilgisi --query = all -n / dev / sda" gibi görünüyor
machineghost

); Komut ben onu yayınlanmıştır ubuntu sistemde çalışmış cevap (yıllar önce) yazdığında - Onların bir noktada komutu değiştirildi varsayalım
Eltariel

Komut hala ubuntuda çalışıyor,udevadm info --query=all -n /dev/ttyUSB1
Siddharth

1
udevadm info --query=all -n /dev/ttyUSBFedora'da da.
slm

22

neler olduğunu görmek için en basit yöntem sadece yazmaktır (elbette root olarak):

blkid -c /dev/null

bu, takılı olmasa bile tüm blok aygıtları hakkında eksiksiz bir genel bakış sağlar


Tüm dağıtım buna sahip değil. Hangisini kullanıyordun?
Yeni İskenderiye

Bu benim Raspbian dağıtımımda hiçbir şey çıkmadı.
IgorGanapolsky

Komut bulunamadı: blkid
IgorGanapolsky

Ubuntu 14.04 64-bit'te bu komuttan çıkış yok.
gbmhunter

11

/dev/disk/by-* bu durumda en kolay yol, nedense hayatı daha ilginç hale getirmek istiyorsanız HAL'ı kullanabilirsiniz.

Kullandığınız tüm cihazları listelemek için:

hal-device

Kullandığınız belirli bir özelliği elde etmek için (bu /dev/sd*bir USB depolama cihazına geri dönecektir ):

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

Ayrıca birde şu var:

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

Daha da karmaşık hale getirmek istiyorsanız, nispeten kolay bir şekilde kendinize HAL tabanlı bir otomatik montaj makinesi yazabilirsiniz ; bu, işleri tamamen otomatikleştirmek istiyorsanız oldukça kullanışlı olabilir.

Ve sadece bütünlüğü için de var:

lsusb -v
lshw

Genel olarak USB ve donanımınız hakkında bazı genel bilgiler sağlar.


2
/ dev / disk / by-id / * usb * çok yardımcı olur.
Rob,

/ dev / disk / etikete göre ftw. Thanks :)
Triptych

10
sudo fdisk -l

Ve sadece sonucu analiz edin.


1
fdisk man page "Eğer hiçbir cihaz verilmezse, / proc / partitions (eğer varsa) içinde belirtilenler kullanılır." Fdisk'i çalıştırmak bir seçenek olmayabilir ... Yüklü olmadığını bildiğim bir Debian sistemine dayanarak, tahminimce bazı GPT sistemleri gereksiz yazılımı kurmayabilir. Yine de / proc / partisyonları kontrol etmek bir seçenek olmalı.
TOOGAM

Bu benim için iyi çalışan tek seçenek oldu. İşe yaramadıysa üzgünüm!
Felipe

8

kullanım

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

Varsayılan udev kuralları uyarınca, çoğu usb aygıtını gösterecek ve sistemdeki blok aygıt adlarına bir bağlantı gösterecektir.

Bu işe yaramazsa, /dev/disk/by-id/doğrudan bak .


6

USB cihazları için kolayca yapabilirsiniz

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. Görevi otomatik yapmak için basit ve özlü bir komut dosyası.
leesei 18:15

2

Alttaki ağaca bir bakın /dev/disk. Çeşitli şemalara göre diskleri ve bölümlerini (dosya sistemleri) listeler.


2

/ var / log / message, eğer dmesg artık bilgi sahibi değilse.


0

USB sürücüsünü çıkarır ve yeniden takarsanız, çekirdekten başlattığınızı görmelisiniz (dmesg)


0

Fırtınadan gelen mükemmel cevaba ve "/ dev / disk / by-id / usb" aygıt ağacını doldurmak için udev bağımlılığına bağlı olarak, bir yüklem (Bash) 'i şöyle tanımlayabilirsiniz:

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
}

Ve sonra kullan:

if is_usb_device "/dev/sdg"; then
    echo "/dev/sdg is a usb device"
else
    echo "/dev/sdg is not a usb device"
fi
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.