2019-06-04 遇到的一點(diǎn)小問題
需要獲取在Arch Linux設(shè)備上的USB存儲設(shè)備的信息注暗,并按格式展示在web端跌前。
.
同事讓先了解幾個命令泣港,試了試:
fdisk命令:
在ArchWiki上有專門的fdisk介紹铺罢。
fdisk -l
獲取的設(shè)備型號被截?cái)嗔嗣0龋倚畔⒂悬c(diǎn)亂朝刊,篩選麻煩耀里。
lsscsi命令:
lsscsi應(yīng)用,這篇說明挺詳細(xì)的拾氓。
lsscsi -s
以表格信息獲取設(shè)備型名冯挎、大小,可惜型號會被截?cái)唷?/p>
[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應(yīng)用咙鞍,這篇List USB Devices Linux有提到一些房官。
lsusb
、lsusb -v
续滋、usb-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應(yīng)用湿颅,隨便搜索時载绿,剛好看到的。
hdparm -i /dev/sdb
這個主要是獲取或設(shè)置硬盤參數(shù)的油航,獲取的信息挺全的崭庸,也符合預(yù)期,可惜不支持讀取USB上的設(shè)備信息谊囚。
.
同事推薦的這篇文章怕享,16 commands to check hardware information on Linux,列出了很多檢查Linux上的硬件信息的命令镰踏。試了試:
lshw命令:
lshw應(yīng)用熬粗;lshw介紹。
lshw
默認(rèn)輸出太多了余境。
lshw -class disk -json
還好這個可以篩選需要的驻呐,而且還能以json格式輸出》祭矗可惜輸出的多條信息中間需要自己加逗號,
含末,兩頭加方括號[]
。
hwinfo命令:
hwinfo應(yīng)用即舌;沒有在Arch manual pages搜索到命令說明書佣盒,鏈接是別的網(wǎng)站的。
hwinfo
默認(rèn)輸出太多了顽聂,還好可以加上--short
肥惭。
hwinfo --short --usb
可以只輸出縮略信息,同時支持篩選紊搪,比如只顯示usb相關(guān)蜜葱,具體可以看說明令。
[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
默認(rèn)輸出可以獲取完整大小耀石、分區(qū)大小牵囤,也有一項(xiàng)MOUNTPOINT可以看到掛載的位置,也可惜顯示的大小數(shù)據(jù)不是想要的滞伟。
lsblk -b
可以按bytes格式獲取大小后再計(jì)算揭鳞。
lsblk -p
可以完整顯示路徑名稱。
lsblk -S
可以獲取完整的品牌型號名梆奈,沒有被截?cái)嘁俺纾欢颐种虚g的分割符也不是空格,是下劃線
_
亩钟,能很方便地使用awk獲取乓梨。
翻了翻說明文件钥弯,發(fā)現(xiàn)lsblk功能還是很多的,可以使用-n
去表頭督禽;可以使用-o +SIZE
來增加輸出的信息列脆霎;可以使用-o NAME,MODEL,SIZE
限定只輸出哪些信息列;可以使用-d /dev /sda
來限定只輸出某個設(shè)備的信息行狈惫;可以使用-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,檢查和控制內(nèi)核的環(huán)形緩沖區(qū)胧谈。在搜索的時候也有看到用這個命令來查看剛插入的usb信息忆肾,當(dāng)然dmesg
主要不是做這個的。記錄一下菱肖。
.
還試了些其他命令客冈,懶得整理了。
目前先不安裝其他應(yīng)用稳强,先使用lsblk -p -S -b -o NAME,MODEL,SIZE -n
去掉表頭场仲,然后只顯示完整的路徑,完整的型號名稱退疫,以及按照bytes格式獲取存儲設(shè)備的大星啤;已使用的容量大小就等mount
U盤后使用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