Linux 中识别 USB 设备名字的 4 种方法

image
对于初学者来说,在 Linux 系统里你必须掌握的技术之一就是识别出插入系统里的各种设备。这也许是你的系统硬盘、外部的存储设备或者是可移动设备,比如 USB 设备或 SD 闪存卡等。

现如今,使用 USB 设备来传输文件是十分常见的事,对于那些喜欢使用命令行的新手来说,当你需要格式化 USB 设备时,学会使用不同的方法来识别 USB 设备名是非常重要的。

如果在系统中插入一个设备,尤其是在桌面环境下,比如 USB 设备,它会自动挂载到一个指定目录,一般是在 /media/username/device-label 目录下,之后你就可以进入到该目录下访问那些文件了。然而,在服务器上就不是这么回事了,你必须手动挂载这个设备,并且指定一个挂载点。

Linux 系统使用 /dev 目录下特定的设备文件来标识插入的设备。你会发现该目录下的某些文件,包括 /dev/sda 或者 /dev/hda 表示你的第一个主设备,每个分区使用一个数字来表示,比如 /dev/sda1 或 /dev/hda1 表示主设备的第一个分区等等。

$ ls /dev/sda*

image

列出 Linux 系统下所有的设备名

现在让我们来使用下面一些特殊的命令行工具找出设备名:

使用 df 命令来找出插入的 USB 设备名

查看插入你系统里的每一个设备及对应的挂载点,你可以使用下图中的 df 命令检查 Linux 系统磁盘空间使用情况:

$ df -h

image
使用 df 命令查找 USB 设备名

使用 lsblk 命令查找 USB 设备名

你也可以使用下面的 lsblk 命令(列出块设备)来列出插入你系统里的所有块设备:

$ lsblk
image

列出 Linux 系统里的块设备

使用 fdisk 工具识别 USB 设备名

fdisk 是一个功能强大的工具,用于查看你系统中的所有分区表,包括所有的 USB 设备,使用 root 权限执行如下命令:

$ sudo fdisk -l

image

列出块设备的分区表

使用 dmesg 命令来识别出 USB 设备名

dmesg 是一个用于打印或者控制内核环形缓冲区(kernel ring buffer)的重要命令。环形缓冲区是一种数据结构,它存放着内核操作数据的信息。

运行如下命令来查看内核操作信息,它同时也会打印出 USB 设备的信息:

$ dmesg

image

dmesg – 打印 USB 设备名

以上就是这篇文章中提及到的所有命令,我们在命令行下使用不同的方法来找出 USB 设备名。你也可以跟大家分享下实现这个目的的其它方法,或者如果你对这篇文章有什么想法也可以在下面跟大家交流下。

文章转载自 开源中国社区 [http://www.oschina.net]
Linux读取U盘或者移动硬盘序列号并获取U盘或者移动硬盘分区名。基本原理如下: 当有外置 USB 插入的时候,会产生 /proc/scsi/usb-storage 目录,并在其产生数字文件(形如 1 2 3 4),此文件存储了设备相关信息。 相应的 /sys/class/scsi_device/ 目录会有 scsi 设备的目录(ide 硬盘默认无子目录,sata硬盘默认有子目录),以数字开头(形如 1:0:0:0 2:0:0:0) 这个数字与前面 /proc/scsi/usb-storage目录的相对应,子目录表示sata硬盘。比如 /sys/class/scsi_device/2:0:0:0/device/block USB设备,从该目录下得到U盘或者移动硬盘的分区名,比如sda1。 该demo实现了上述过程,先检查 /proc/scsi/usb-storage 目录,看是否有u盘或者移动硬盘接入,如果有则读取u盘或者移动硬盘的序列号,然后在/sys/class/scsi_device/目录下逐级查找,直到找到u盘或者移动硬盘的分区。 完整代码,可直接编译和测试,嵌入式环境下也是适应的。 在linux测试如下,id表示序列号,sdb1表示是分区名称: # ./a.out udisk dev num:0 udisk id:055CE21B ret:0 dev num:0 found dir:0:0:0:1 found dev dir:0:0:0:1,full path:/sys/class/scsi_device/0:0:0:1 sub founction found dir:sda found sd device dir:sda,full path:/sys/class/scsi_device/0:0:0:1/device/block/sda found dir:0:0:0:2 found dev dir:0:0:0:2,full path:/sys/class/scsi_device/0:0:0:2 sub founction found dir:sdb found sd device dir:sdb,full path:/sys/class/scsi_device/0:0:0:2/device/block/sdb found sd sub device dir:sdb1 found dir:0:0:0:0 found dev dir:0:0:0:0,full path:/sys/class/scsi_device/0:0:0:0 sub funciton Open Directory /sys/class/scsi_device/0:0:0:0/device/block Error:No such file or directory get name return:0,disk name:sdb1 # 因为有的USB设备会有好几个,比如把CD和U盘集成到一起,就会出现上面的情况,有多个子目录去查找。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值