假设我插入了几个不会自动安装的USB驱动器。如何找出哪个设备文件属于哪个物理设备,例如可以挂载它?
我正在运行Mac OS X,但我更喜欢一个在所有(至少是最受欢迎的)Unix系统上都可以使用的答案。过去我在Linux上遇到过这个问题。
假设我插入了几个不会自动安装的USB驱动器。如何找出哪个设备文件属于哪个物理设备,例如可以挂载它?
我正在运行Mac OS X,但我更喜欢一个在所有(至少是最受欢迎的)Unix系统上都可以使用的答案。过去我在Linux上遇到过这个问题。
Answers:
您可以获得有用的信息查询udev
(在使用它的系统上-肯定是几乎所有台式机类型的Linux)。例如,如果您想知道与哪个附加驱动器相关联/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
)中放入以下函数:
listusbdisks() { [[“ x $ 1” ==“ xv”]] &&移位&&本地VERBOSE = -v $ {@-/ dev / sd中的dsk? 做 / sbin / udevadm info --query = path --name =“ $ dsk” | grep --colour = auto -q usb || 继续 回声“ =====设备$ dsk是:” (eval $(/ sbin / udevadm info --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 && echo“ -----设备已安装----” 回声 做完了 }
像这样使用它:
listusbdisks
-识别所有/dev/sdx
设备;listusbdisks sdb
或listusbdisks /dev/sdb
或listusbdisks sdb sdc
-获得有关特定设备的信息而已;listusbdisks -v [optional devices as above]
-显示的详细输出 lsusb
[编辑]:添加了一些功能,例如查询许多设备,检查安装和控制的详细程度lsusb
。
udev
。
lsusb
它也是一个可选程序。但是两者都是非常普遍的。
dmesg
。但是,如果已经插入设备并且在第一个设备之后插入了更多设备,这将无济于事。:)