Câu hỏi Làm thế nào để tôi tìm ra / dev là một ổ đĩa flash USB?


Tôi muốn gắn một ổ đĩa USB, hai trong số họ và tôi cần hai điểm gắn kết khác nhau. Thật không may, hạt nhân Linux đã trải qua một sự thay đổi tên và tôi không thể tìm ra /dev vị trí là đúng. Có cách nào để xem qua dmesg hoặc là /proc hoặc một nơi khác để tìm ra nút thiết bị nào là ổ USB.

(Tôi đang sử dụng ArchLinux nếu nó giúp .../dev/sda là ổ cứng đầu tiên, /dev/sr0 là một ổ đĩa dvd, v.v.)

chỉnh sửa: Ổ USB được kết nối với cổng USB. Tôi nhìn qua dmesg và nó nói rằng trung tâm đã được kết nối và nó quét cho 3 thiết bị kết nối với nó. Vẫn không thể thấy ổ USB của tôi ở đâu.


152
2017-09-16 03:51


gốc


Không thể nhìn thấy nó? Có thể chờ một chút. Hoặc thử một cổng USB khác. Xem sự khác biệt trong 'lsusb' - Nick Devereaux
Có thể muốn thuật lại câu hỏi một chút - không phải tất cả các thiết bị USB đều là đĩa. - Arafangion
Các df lệnh cho bạn thấy nơi nó được gắn - Will Sheppard


Các câu trả lời:


Cách dễ nhất: Nhìn vào đầu ra của dmesg sau khi kết nối thiết bị USB. Nó sẽ cho bạn thấy những gì /dev nút đã được gán cho nó.


77
2017-09-16 03:53



dmesg hoạt động tốt, nhưng tôi có một trường hợp dmesg không hiển thị /dev nút: [421963.864281] usb 3-6: new high-speed USB device number 32 using xhci_hcd Điều đó có nghĩa là gì? Làm cách nào để gắn thiết bị này? Thiết bị hiển thị trên lsusb... - modulitos
Trên thực tế, tôi đã tìm ra. Đã có bản cập nhật hạt nhân kể từ lần khởi động lại gần đây nhất của tôi đã gây ra sự cố này. Sau khi khởi động lại, usb của tôi gắn kết tốt. Hy vọng rằng điều này sẽ giúp một ai đó! - modulitos


Miễn là bạn đang chạy udev, bạn có thể làm điều này dễ dàng bằng cách tham chiếu / dev / disk / by-id / usb-tên nhà sản xuất_số sê-ri. Chúng xuất hiện dưới dạng các liên kết tượng trưng mà bạn có thể tham chiếu trực tiếp trong fstab của bạn hoặc bạn có thể dereference bằng cách sử dụng readlink -e để xác định thiết bị khối liên quan.

Đây là một ví dụ thế giới thực. Trên máy tính của tôi, tôi có 3 ổ cứng USB được kết nối. Chúng hiển thị trong / dev / disk / by-id với số sê-ri duy nhất (mặc dù chúng có chung chuỗi nhà sản xuất). Tôi đã tạo liên kết tượng trưng cho từng mục trong số ba mục nhập duy nhất này và hiện có thể nhanh chóng xác định ổ đĩa nào (và thiết bị nào được liên kết với mỗi ổ đĩa) bằng cách chạy readlink -e linkname. Ví dụ: chạy readlink -e / root / disk2 trên máy của tôi hiện đang hiển thị "/ dev / sde", trong khi readlink -e / root / disk3 không tạo ra kết quả nào.


53
2017-09-16 19:29



Ngắn và đơn giản: for devlink in /dev/disk/by-id/usb*; do readlink -f ${devlink}; done - Felipe Alcacibar


Tất cả đều là những gợi ý tốt, nhưng phương pháp nhanh nhất và tiết kiệm nhất là chỉ cần gõ như sau trong terminal:

mount

sẽ cung cấp danh sách tất cả các thiết bị được gắn (điều này giả định rằng ổ USB được gắn kết, thường là trường hợp với các bản phân phối Linux hiện đại).


50
2017-09-04 18:51



Không, nó không thiết bị của bạn một cách kỳ diệu. Bạn phải chỉ định nó với mount /dev/id /mount/point, điều đó không hiệu quả. - polym
Câu trả lời của tôi giải quyết câu hỏi của người dùng 'Có cách nào để xem qua dmesg hay / proc hoặc ở đâu đó khác để tìm ra nút thiết bị nào là ổ đĩa USB.', Và không nhằm cung cấp hướng dẫn về tính thực tiễn của việc gắn ổ đĩa trong Linux . - AnotherLongUsername
Câu trả lời này giải quyết một câu hỏi gần như giống hệt với tôi. - Matthew Brown aka Lord Matt
Tôi nghĩ rằng hành vi automount phụ thuộc rất nhiều vào loại distro. - jiggunjer
df quá, tôi cho là vậy. - Alexey


Thử lệnh udevinfo -q all -n /dev/sda, Ở đâu /dev/sda là đường dẫn đến đĩa của bạn. Điều này cung cấp cho bạn một lượng thông tin về đĩa bạn đang xem - có một mục cho bạn biết về chiếc xe buýt được kết nối.

Điều này tất nhiên giúp bạn tiết kiệm từ phải grep thông qua dmesg và / hoặc các bản ghi.

Cập nhật 

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

Từ ít nhất là tháng 7 năm 2010 [1]  udevinfo được thay thế bằng Debian (và có nguồn gốc) bởi udevadm info với một chút thoáng qua mà đã có các liên kết tượng trưng sớm không được chấp nhận và bị loại bỏ (bạn vẫn có thể tìm thấy chúng trong máy cũ không được cập nhật). Luôn luôn từ [1] chúng tôi có thể đọc:

Trong udev 117, udevadm đã được giới thiệu và udevinfo và các chương trình khác được chuyển thành các liên kết tương thích. Các liên kết tượng trưng không được chấp nhận trong udev 128 và bị xóa vì tốt trong udev 147.


24
2017-09-16 03:59



Trong Debian, udevinfo được đổi tên udevadm. - Steve Pomeroy
Trên Ubuntu, lệnh có vẻ là "thông tin udevadm --query = all -n / dev / sda" - machineghost
Tôi cho rằng họ đã đổi tên lệnh tại một thời điểm nào đó - khi tôi viết câu trả lời (trước đây) lệnh đã làm việc trên hệ thống ubuntu mà tôi đã đăng nó từ;) - Eltariel
Lệnh hoạt động trong ubuntu, udevadm info --query=all -n /dev/ttyUSB1 - Siddharth
udevadm info --query=all -n /dev/ttyUSB trong Fedora nữa. - slm


phương pháp đơn giản nhất để xem những gì đang xảy ra là chỉ cần gõ (như là người chủ của khóa học):

blkid -c /dev/null

điều này cung cấp cho bạn một cái nhìn tổng quan hoàn chỉnh về tất cả các thiết bị khối ngay cả khi không được gắn kết


23
2018-01-02 08:37



Không phải tất cả các distro đều có điều này. Bạn đang sử dụng cái nào? - New Alexandria
Điều này không có kết quả gì trên bản phân phối Raspbian của tôi. - Igor G.
Không tìm thấy lệnh: blkid - Igor G.
Không có đầu ra từ lệnh này trên Ubuntu 14.04 64-bit. - gbmhunter


/dev/disk/by-* là cách dễ nhất trong trường hợp này, nếu vì lý do nào đó bạn muốn làm cho cuộc sống thú vị hơn, bạn có thể sử dụng HAL.

Để liệt kê tất cả các thiết bị bạn sử dụng:

hal-device

Để có được một tài sản cụ thể mà bạn sử dụng (điều này sẽ trở lại /dev/sd* trên thiết bị lưu trữ USB):

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

Ngoài ra còn có:

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

Nếu bạn muốn làm cho nó phức tạp hơn, bạn có thể viết một cách tương đối dễ dàng Thiết bị đo tự động dựa trên HAL, có thể khá tiện dụng nếu bạn muốn tự động hoàn thành mọi thứ.

Và chỉ để hoàn thành, cũng có:

lsusb -v
lshw

Cung cấp một số thông tin chung về USB và phần cứng của bạn nói chung.


11
2017-09-24 22:36



/ dev / disk / by-id / * usb * rất hữu ích. - Rob
/ dev / disk / by-label ftw. Cảm ơn :) - Triptych


Sử dụng

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

Theo các quy tắc udev mặc định, điều đó sẽ cho bạn thấy hầu hết các thiết bị USB và nó sẽ hiển thị cho bạn liên kết tượng trưng đến tên khối thiết bị của họ trên hệ thống.

Nếu điều đó không hiệu quả, hãy nhìn vào /dev/disk/by-id/ trực tiếp.


8
2017-09-16 04:18





sudo fdisk -l

Và chỉ phân tích kết quả.


7
2017-11-10 02:47



trang người dùng fdisk "Nếu không có thiết bị nào được đưa ra, những thiết bị được đề cập trong / proc / partition (nếu tồn tại) được sử dụng." Chạy fdisk có thể không phải là một tùy chọn ... Dựa trên một hệ thống Debian mà tôi biết không có nó được cài đặt, tôi đoán là một số hệ thống GPT có thể không cài đặt phần mềm không cần thiết. Tuy nhiên, việc kiểm tra / proc / phân vùng phải là một tùy chọn. - TOOGAM
Đây là lựa chọn duy nhất làm việc tốt cho tôi. Tôi xin lỗi nếu nó không làm việc cho bạn! - Felipe


Đối với thiết bị USB, bạn chỉ cần thực hiện

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. Kịch bản đơn giản và ngắn gọn để thực hiện tác vụ tự động. - leesei


Hãy nhìn cây dưới /dev/disk. Nó liệt kê các đĩa và phân vùng của chúng (các hệ thống tệp) bằng các lược đồ khác nhau.


2
2017-09-16 03:55





/ var / log / message nếu dmesg không còn thông tin nữa.


2
2017-09-16 03:56