首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在linux中通过相应的文件获取磁盘的序列号?

问如何在linux中通过相应的文件获取磁盘的序列号?
EN

Unix & Linux用户
提问于 2015-11-30 02:41:49
回答 3查看 3.9K关注 0票数 0

我知道,对于linux中的磁盘,我们可以使用诸如hdparm或smartctl之类的命令来获取它的基本信息。但是对于这些命令的实现,我认为所有这些命令都是通过在linux中读取相应的磁盘文件来实现的。例如,要获得设备/dev/sda的大小,我们可以使用cat /sys/block/sda/size而不是使用hdparm或smartctl命令。因此,问题是如何通过直接读取磁盘的相应文件来获取磁盘的序列号。

EN

回答 3

Unix & Linux用户

发布于 2015-11-30 08:33:57

我只是试一试。它确实通过ioctl获得了序列。这是strace的一些输出:

代码语言:javascript
复制
open("/dev/sda", O_RDONLY|O_NONBLOCK)   = 3
fcntl(3, F_SETFD, FD_CLOEXEC)           = 0
ioctl(3, SG_IO, {'S', SG_DXFER_FROM_DEV, cmd[6]=[12, 00, 00, 00, 24, 00], mx_sb_len=32, iovec_count=0, dxfer_len=36, timeout=20000, flags=0, data[36]=["\0\0\5\2[\0\0\0ATA     WDC WD5000LPVX-0"...], status=00, masked_status=00, sb[0]=[], host_status=0, driver_status=0, resid=0, duration=0, info=0}) = 0
ioctl(3, SG_IO, {'S', SG_DXFER_FROM_DEV, cmd[16]=[85, 08, 0e, 00, 00, 00, 01, 00, 00, 00, 00, 00, 00, 00, ec, 00], mx_sb_len=32, iovec_count=0, dxfer_len=512, timeout=20000, flags=0, data[512]=["zB\377?7\310\20\0\0\0\0\0?\0\0\0\0\0\0\0    W -DXW11"...], status=00, masked_status=00, sb[0]=[], host_status=0, driver_status=0, resid=0, duration=0, info=0}) = 0
ioctl(3, SG_IO, {'S', SG_DXFER_FROM_DEV, cmd[16]=[85, 08, 0e, 00, 00, 00, 01, 00, 00, 00, 00, 00, 00, 00, ec, 00], mx_sb_len=32, iovec_count=0, dxfer_len=512, timeout=20000, flags=0, data[512]=["zB\377?7\310\20\0\0\0\0\0?\0\0\0\0\0\0\0    W -DXW11"...], status=00, masked_status=00, sb[0]=[], host_status=0, driver_status=0, resid=0, duration=0, info=0}) = 0
票数 1
EN

Unix & Linux用户

发布于 2015-11-30 08:28:03

您可以使用strace来查找smartctl如何获取磁盘的序列号。CMD线喜欢这样: strace -a /dev/sda。也许它只是通过ioctl得到了系列。

票数 0
EN

Unix & Linux用户

发布于 2015-11-30 04:56:22

您还可以使用/proc/partitions查找该信息。

该文件给出了所有分区的块大小,但也为整个磁盘提供了相同的信息。

票数 -1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/246307

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档