美文网首页
获取Arch Linux上存储设备信息的一些记录

获取Arch Linux上存储设备信息的一些记录

作者: 苍蝇的梦 | 来源:发表于2019-06-09 23:03 被阅读0次

    2019-06-04 遇到的一点小问题
    需要获取在Arch Linux设备上的USB存储设备的信息,并按格式展示在web端。

    .

    同事让先了解几个命令,试了试:

    fdisk命令

    ArchWiki上有专门的fdisk介绍
    fdisk -l获取的设备型号被截断了,而且信息有点乱,筛选麻烦。

    lsscsi命令

    lsscsi应用,这篇说明挺详细的。
    lsscsi -s以表格信息获取设备型名、大小,可惜型号会被截断。

    [root@archlinux ~]# lsscsi -s
    [0:0:0:0]    disk    ATA      Crucial_CT275MX3 R040  /dev/sda    275GB
    [1:0:0:0]    disk    ATA      SanDisk SD9SN8W2 7000  /dev/sdb    256GB
    [2:0:0:0]    disk    JMicron  Generic          0425  /dev/sdc   1.00TB
    
    lsusb命令usb-devices命令

    usbutils应用,这篇List USB Devices Linux有提到一些。
    lsusblsusb -vusb-devices、、、列出了不少ID,不过没打算用这个,先不管。

    [root@archlinux ~]# lsusb
    Bus 002 Device 002: ID 152d:0567 JMicron Technology Corp. / JMicron USA Technology Corp. JMS567 SATA 6Gb/s bridge
    Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
    Bus 001 Device 003: ID 05e3:0608 Genesys Logic, Inc. Hub
    Bus 001 Device 002: ID 05e3:0608 Genesys Logic, Inc. Hub
    Bus 001 Device 007: ID 090c:1000 Silicon Motion, Inc. - Taiwan (formerly Feiya Technology Corp.) Flash Drive
    Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
    
    .
    hdparm命令

    hdparm应用,随便搜索时,刚好看到的。
    hdparm -i /dev/sdb这个主要是获取或设置硬盘参数的,获取的信息挺全的,也符合预期,可惜不支持读取USB上的设备信息。

    .

    同事推荐的这篇文章,16 commands to check hardware information on Linux,列出了很多检查Linux上的硬件信息的命令。试了试:

    lshw命令

    lshw应用lshw介绍
    lshw默认输出太多了。
    lshw -class disk -json还好这个可以筛选需要的,而且还能以json格式输出。可惜输出的多条信息中间需要自己加逗号,,两头加方括号[]

    hwinfo命令

    hwinfo应用;没有在Arch manual pages搜索到命令说明书,链接是别的网站的。
    hwinfo默认输出太多了,还好可以加上--short
    hwinfo --short --usb可以只输出缩略信息,同时支持筛选,比如只显示usb相关,具体可以看说明令

    [root@archlinux ~]# hwinfo --short --disk
    disk:                                                           
      /dev/sdd             SMI USB DISK
      /dev/sdb             SanDisk SD9SN8W2
      /dev/sdc             JMicron Generic
      /dev/sda             Crucial_CT275MX3
    [root@archlinux ~]# hwinfo --short --usb 
    disk:                                                           
      /dev/sdd             SMI USB DISK
      /dev/sdc             JMicron Generic
    hub:
                           Genesys Logic Hub
                           Linux Foundation 2.0 root hub
                           Linux Foundation 3.0 root hub
                           Genesys Logic Hub
    

    lsblk命令

    lsblk默认输出可以获取完整大小、分区大小,也有一项MOUNTPOINT可以看到挂载的位置,也可惜显示的大小数据不是想要的。
    lsblk -b可以按bytes格式获取大小后再计算。
    lsblk -p可以完整显示路径名称。
    lsblk -S可以获取完整的品牌型号名,没有被截断;而且名字中间的分割符也不是空格,是下划线_,能很方便地使用awk获取。
    翻了翻说明文件,发现lsblk功能还是很多的,可以使用-n去表头;可以使用-o +SIZE来增加输出的信息列;可以使用-o NAME,MODEL,SIZE限定只输出哪些信息列;可以使用-d /dev /sda来限定只输出某个设备的信息行;可以使用-J以json格式输出信息。

    [root@archlinux ~]# lsblk -S
    NAME HCTL       TYPE VENDOR   MODEL                    REV TRAN
    sda  0:0:0:0    disk ATA      Crucial_CT275MX30*****  R040 sata
    sdb  1:0:0:0    disk ATA      SanDisk_SD9SN8W256***** 7000 sata
    sdc  2:0:0:0    disk JMicron  Generic                 0425 usb
    
    .

    dmesg命令
    介绍是dmesg - print or control the kernel ring buffer检查和控制内核的环形缓冲区。在搜索的时候也有看到用这个命令来查看刚插入的usb信息,当然dmesg主要不是做这个的。记录一下。

    .

    还试了些其他命令,懒得整理了。
    目前先不安装其他应用,先使用lsblk -p -S -b -o NAME,MODEL,SIZE -n去掉表头,然后只显示完整的路径,完整的型号名称,以及按照bytes格式获取存储设备的大小;已使用的容量大小就等mountU盘后使用df来获取。

    [root@archlinux ~]# lsblk -p -S -b -o NAME,MODEL,SIZE -n
    /dev/sda Crucial_CT275MX30*****   275064201216
    /dev/sdb SanDisk_SD9SN8W256*****  256060514304
    /dev/sdc HGST_HTS541010B*****    1000204886016
    /dev/sdd USB_DISK                   8166703104
    
    HGST_HTS541010B*****

    相关文章

      网友评论

          本文标题:获取Arch Linux上存储设备信息的一些记录

          本文链接:https://www.haomeiwen.com/subject/ktmjxctx.html