在Linux中查找哪个驱动器对应哪个USB大容量存储设备

2023-11-21

我有几个 USB 大容量存储闪存驱动器连接到 Ubuntu Linux 计算机(Ubuntu 10.04.1,内核 2.6.32-25-386),我需要以编程方式区分它们(如果可能的话,从 bash,但我不怕编译) - 我需要找到哪个块设备对应于哪个physical设备(例如/dev/sdb1-> USB 端口 1 中的设备;就我而言,一台设备〜一卷)。

换句话说,我知道我有三个硬件设备插入了 USB 端口;它们每个都在系统中显示为 USB 大容量存储设备(如 lsusb 所示),被创建为块设备(/dev/sdb1)并通过 UUID 自动挂载(/media/1234-5678).

USB device               block device    mountpoint
USB device in port 2.2 <-> /dev/sdb1   <-> /media/1234-5678

I'm not试图找到块设备和挂载点之间的关系;我正在尝试查找块设备和USB设备之间的关系,有什么办法吗?

为什么?磁盘上将会有一些写入,完成时间不可预测。我需要向操作员提供一些指示,例如“您现在可以移除端口 2 中的磁盘(左起第二个)”。我已经找到了哪个物理端口对应于该特定机器上的哪个端口号,并且从安装点查找块设备很简单;现在我陷入了将逻辑 USB 端口映射到块设备的困境。

我可以使用 lsusb 查看磁盘:

Bus 001 Device 058: ID 067b:2517 Prolific Technology, Inc. Mass Storage Device
Bus 001 Device 060: ID 067b:2517 Prolific Technology, Inc. Mass Storage Device
Bus 001 Device 061: ID 067b:2517 Prolific Technology, Inc. Mass Storage Device

我可以看到它们已安装(通过它们的 UUID):

/dev/sdb1 on /media/BC88-15C4 type vfat
/dev/sdc1 on /media/AE54-65AA type vfat
/dev/sdd1 on /media/58D2-FED1 type vfat

现在,所有驱动器都是来自同一制造商的相同型号,因此我无法通过这一点来区分它们,并且我不能保证它们会按特定顺序插入。

我已经发现/sys/bus/usb/devices(USB 设备列表),但它似乎与我从 lsusb 获得的数据相同 - 我在那里没有看到到磁盘的映射。

还有/sys/block/sdb and /sys/block/sdb/sdb1(块设备及其第一个分区;类似地sdc and sdd),但我再次看到没有映射到设备。


我不确定这是在哪个内核版本中实现的,但是/sys/block/*条目是设备的符号链接。

换句话说,/sys/block/sdb符号链接到不同的目录,其名称包含 USB 设备 ID。

$ file /sys/block/sdb
/sys/block/sdb: symbolic link to `../devices/pci0000:00/0000:00:02.1/usb1/1-1/1-1.1/1-1.1:1.0/host31/target31:0:0/31:0:0:0/block/sdb'
                                                  USB version and port here---^^^^^

The 1-1.1是有趣的部分,表示usb1-port 1.device 1。当插入集线器时,会添加另一个级别:1-2.3.1,表示usb1-port 2.port 3.device 1.

伪代码:

get partition name # e.g. /dev/sdb1
get disk name # that would be /dev/sdb
get your basename # sdb
see where /sys/block/$your_basename points to # e.g. ../devices/blah/blah/1-2.1/blah
get the longest substring matching "\d-\d+(.\d+)*"  # e.g. 1-2.1
that is the device id you want
/sys/bus/usb/devices/$device_id/ has all kinds of information about it
the ID corresponds to hardware USB ports

bash 中的工作示例脚本.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在Linux中查找哪个驱动器对应哪个USB大容量存储设备 的相关文章

  • 如何在多行而不是单行输出上打印 Linux 组名称

    我尝试过 getent group 命令 id Gn user 和一些 sed 组合 但我认为我无法实现 因此向其他程序员伸出援手 我希望能够打印此 groups abc123输出 abc123 devops 构建测试设计 预期输出 gro
  • 在Linux服务器中安装ZLIB

    我要安装ZLIB http www techsww com tutorials libraries zlib installation installing zlib on ubuntu linux php在Linux服务器中 我的服务器帐
  • 寻找 shell 重定向交错行为的解释

    给定以下脚本 t sh bin bash if eq 0 then log if gt 0 then printf s n else cat fi tee a logged out else log if gt 0 then printf
  • 错误:选项“Z”仅在夜间编译器上被接受[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我正在通过斯坦福操作系统课程 cs140e https web stanford edu class cs140e 其中一个问题是 有一个名
  • PS1 定义中的条件 pwd

    我想显示当前工作目录如果我处于symlink比没有 到目前为止我已经 pwd P pwd echo 1 31m pwd P echo 1 32m pwd 将返回所需的输出 但它不能替代 w在命令提示符下 我尝试用反引号括起来 但这只会导致p
  • 如何在不需要设置 LD_LIBRARY_PATH shell 变量的情况下输入“cargo run”?

    我构建了一个 Rust 程序 通过 C 接口调用 C 函数 为了执行该程序 我必须运行 export LD LIBRARY PATH
  • Linux 堆栈大小

    我正在寻找 Linux 内核中堆栈的良好描述 但我发现找到任何有用的东西出奇地困难 我知道大多数系统的堆栈限制为 4k 而其他系统则限制为 8k 我假设每个内核线程 下半部分都有自己的堆栈 我还听说 如果中断发生 它会使用当前线程的堆栈 但
  • 复制稀疏文件

    我正在尝试了解 Linux UNIX 低级接口 作为练习 我想编写一个代码 将一个有漏洞的文件复制到一个新文件 同样有漏洞 所以我的问题是 如何从第一个文件读取 而不是直到第一个洞 而是直到文件的最后 如果我没错的话 read 当到达第一个
  • 在 bash 中生成脚本并将其保存到需要 sudo 的位置

    在 bash 中 我可以根据此站点创建一个带有定界符的脚本 http tldp org LDP abs html abs guide html GENERATESCRIPT http tldp org LDP abs html abs gu
  • 对于位字段,使用 unsigned char 或 unsigned int 哪一个更好?为什么?

    我只想了解以下结构声明 哪一种更适合用于内存分配 为什么 如果是 unsigned char 和 unsigned int 那么填充又如何呢 struct data unsigned char a 3 unsigned char b 4 a
  • 如何测量 Linux 中给定进程的活动导致的净使用磁盘空间变化?

    我想监视正在运行的进程的磁盘空间需求 理想情况下 我希望能够指向一个进程并找出由该进程引起的已用磁盘空间的净变化 在 Linux 中是否有一种简单的方法可以做到这一点 我很确定在 Solaris 中使用 DTrace 执行此操作是可行的 尽
  • 从 Bash 中的字符串中删除固定前缀/后缀

    我想从字符串中删除前缀 后缀 例如 给定 string hello world prefix hell suffix ld 我如何得到以下结果 o wor prefix hell suffix ld string hello world f
  • printf 中的填充字符

    我正在编写一个 bash shell 脚本来显示进程是否正在运行 到目前为止 我得到了这个 printf 50s s n PROC NAME UP 该代码给了我这个输出 JBoss DOWN GlassFish UP verylongpro
  • 需要一种临时重定向 STDOUT 的方法

    我知道如何在 Linux 中重定向输出 问题是 我的 bash 脚本中有很多输出 我不想输入类似的内容 echo foo gt gt bar 一遍又一遍地 我更愿意做这样的事情 hey bash for the time being put
  • Rsync 制作平面副本

    我正在尝试编写一个脚本 将一个目录 带有子目录 的所有文件复制到另一个目录的根目录 所以想象一下我有这个文件结构 pic JPG PIC5 JPG FOLDER pic2 JPG pic3 JPG FOLDER2 pic4 JPG 我想要该
  • 将 React 应用程序作为后台进程运行

    我对部署前端代码完全陌生 因此提出了这个问题 我有一个 React 应用程序 需要作为后台进程运行 但是我对如何执行此操作有点困惑 我运行一个 npm 脚本 npm run build 在服务器上构建 缩小和服务项目 构建过程的相关代码是这
  • Linux 上的 JavaFX

    Linux x86 和 x64 上的 JavaFX 情况如何 JavaFX 应用程序可以在 Linux 操作系统上顺利执行吗 我发现了 2011 年和 2012 年的一些问题 当时应用程序不稳定 目前发布的 JFX 版本是 2 2 4 在
  • 通过 ssh 运行具有嵌套引号的 shell 命令

    我有以下 shell 命令 ssh user host df grep dev awk BEGIN print DISK USAGE STATUS split 5 a var GREEN print 1 5 var column t 我需要
  • 在管道中使用“tee”时,如何将标准错误写入文件?

    我知道如何使用tee写入输出 标准输出 https en wikipedia org wiki Standard streams Standard output 28stdout 29 of aaa sh to bbb out 同时仍然在终
  • cURL 错误 28:5001 毫秒后解析超时

    我使用 WordPress 最近将我的网站从 cpanel 主机移动到带有 directadmin 面板的 Linux 服务器 转账后立即发现客户在通过EDD插件下载时出现以下错误 cURL 错误 28 5001 毫秒后解析超时 我也遇到了

随机推荐

  • 对 10^18 以内的数进行素因式分解的最快方法

    给定一个数字1 lt n lt 10 18 我怎样才能以最小的时间复杂度分解它 互联网上有很多帖子讨论如何找到主要因素 但没有一个 至少从我所看到的 说明它们的好处 比如在特定情况下 除了埃拉托色尼筛法之外 我还使用 Pollard 的 r
  • 如何解码类型取决于标签的值数组?

    我有一个包含值数组的 JSON tag Foo tag Bar tag Baz 我想将这个数组解码为一个数组struct其中特定类型取决于标签 protocol SomeCommonType struct Foo Decodable Som
  • SearchView 的 OnCloseListener 不起作用

    我正在尝试添加对SearchView在 Android 3 0 ActionBar 中 但我无法获取OnCloseListener上班 这是我的代码 Override public boolean onCreateOptionsMenu M
  • 如何允许通过应用程序脚本访问 importrange 函数?

    When you enter an importrange function manually into a spreadsheet you receive a pop up and must allow access 但是 我正在尝试找到
  • cout 消息的顺序与预期不符

    当我执行下面的代码时 我对它的输出感到困惑 Code int add int a int b cout lt lt inside int add function lt
  • 如何防止 Angular 指令之间共享作用域?

    我的所有指令都使用相同的范围 并且我希望我的指令能够自行运行 指示 app directive headerSort function return restrict A controller function scope element
  • 如何从 WordPress 数据库获取缩略图到外部页面

    我有一个 WordPress 安装 我想做的是直接从数据库中的 WordPress 表调用数据并将它们显示在其他一些非 WordPress 页面上 目前 我已成功从 中提取了最近的三篇帖子wp posts桌子 然而 我无法在架构中看到存储帖
  • Tensorflow/Keras 中 Dice Loss 的正确实现

    我一直在尝试尝试基于区域 骰子损失但互联网上有很多不同程度的变化 我找不到两个相同的实现 问题是所有这些都会产生不同的结果 以下是我找到的实现 一些用途smoothing因素本文作者已经打电话了epsilon 有些在分子和分母中都使用它 使
  • 致命:./config 中“core.sharedrepository”的配置值错误

    我刚刚输入命令 git config core sharedrepository 1我现在收到错误 致命 config 中 core sharedrepository 的配置值错误 有谁知道如何解决它 当您为 git config core
  • JavaScript 中的“=>”(由等于和大于组成的箭头)是什么意思?

    我知道 gt 运算符意味着大于或等于 但我见过 gt 在一些源代码中 那个运算符是什么意思 这是代码 promiseTargetFile fpParams aSkipPrompt relatedURI then aDialogAccepte
  • 如何从任务中打印累加器变量(似乎无需调用 value 方法即可“工作”)?

    我知道从任务的角度来看 当累加器变量在工作节点中执行时 它们是 只写 的 我对此做了一些测试 我意识到我能够在任务中打印累加器值 这里我正在初始化驱动程序中的累加器 scala gt val accum sc accumulator 123
  • 如何让动态导入在 webpack 4 中工作

    我正在尝试将我的应用程序迁移到 webpack 4 我的头已经疼了 动态导入 这是我的代码分割方法 逐页 但我无法让它发挥作用 使用以下软件包设置了非常简单的测试器 devDependencies babel core 6 26 3 bab
  • 子串算法

    任何人都可以指出在另一个字符串中搜索子字符串的最佳算法吗 或者在另一个字符数组中搜索一个字符数组 从什么角度看最好 高德莫里斯普拉特是一个很好的 您可以在以下位置找到更多讨论内容 字符串搜索算法的维基百科条目
  • 如何从已签名的 .Net 程序集中读取数字签名信息?

    我正在编写一个要在我们的软件构建过程中使用的程序集信息应用程序 并尝试从已签名的 Net 程序集中读取数字签名信息 我想在我的 C 代码中执行 Windows 资源管理器可以执行的操作 方法是右键单击已签名的程序集并选择 数字签名 选项卡
  • 整数类型上基于 iLocation 的布尔索引不可用

    我有一个问题 我想获取那些包含缺失值的行 使用 iloc 和pd isnull 对于我表中的 里程 列 import pandas as pd df pd read csv BikeList csv d1 df Mileage print
  • 格式化十进制 C# - 保留最后一个零

    我一直在寻找这个但似乎找不到答案 我有以下小数以及我想要从 String Format 获得的相应输出 100 00 gt 100100 50 gt 100 50100 51 gt 100 51 我的问题是我似乎找不到一种格式可以保留 10
  • Scala - 当外部进程退出时获取回调

    我想用 scala 替换我的很多 Perl 我经常做的一件事是调用公司其他团队提供给我的二进制文件 通常是编译的 C 但也可以是 java 其他 perl 脚本 q 脚本等 例如 为了进行一些复杂的数学运算 我将启动一个外部二进制文件 然后
  • 如何将 AngularJS 与 Struts 1.x 结合使用

    我对 AngularJS 和客户端内容很陌生 我正在向使用 Struts 1 3 作为框架的旧应用程序添加一个新页面 我想使用 AngularJS 作为前端 我知道如何通过将 JSON 写入前端并返回来从操作类返回 JSONnull为前进的
  • 我可以将一种编译生成的目标文件链接到另一种编译生成的目标文件吗?

    更具体地说 我们假设两个编译器位于同一平台 操作系统 指令集 上 然而 其中一个目标文件是由依赖于编译器的代码生成的 另一方面 代码是面向对象的并且尊重封装 我需要这个来构建我正在制作的框架 目标平台是任何有GCC和Java虚拟机的系统 事
  • 在Linux中查找哪个驱动器对应哪个USB大容量存储设备

    我有几个 USB 大容量存储闪存驱动器连接到 Ubuntu Linux 计算机 Ubuntu 10 04 1 内核 2 6 32 25 386 我需要以编程方式区分它们 如果可能的话 从 bash 但我不怕编译 我需要找到哪个块设备对应于哪