假设我插入了几个不会自动安装的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。但是,如果已经插入设备并且在第一个设备之后插入了更多设备,这将无济于事。:)