对于Linux中几个获取硬件详细信息的命令感兴趣的读者,本文将会是一篇不错的选择,我们将详细介绍linux中几个获取硬件详细信息的命令是,并为您提供关于Dmidecode:在Linux下获取硬件信息、
对于Linux中几个获取硬件详细信息的命令感兴趣的读者,本文将会是一篇不错的选择,我们将详细介绍linux中几个获取硬件详细信息的命令是,并为您提供关于Dmidecode: 在 Linux 下获取硬件信息、Inxi:获取Linux系统和硬件信息的神器、Linux C 获取硬件信息的一些方法、linux – 获取ubuntu服务器的服务器硬件详细信息的有用信息。
本文目录一览:- Linux中几个获取硬件详细信息的命令(linux中几个获取硬件详细信息的命令是)
- Dmidecode: 在 Linux 下获取硬件信息
- Inxi:获取Linux系统和硬件信息的神器
- Linux C 获取硬件信息的一些方法
- linux – 获取ubuntu服务器的服务器硬件详细信息
Linux中几个获取硬件详细信息的命令(linux中几个获取硬件详细信息的命令是)
在Linux系统特别是服务器系统中常常会需要查看设备的硬件信息,这时候使用命令查看就显得非常方便。本文介绍几个在Linux系统中查看硬件信息的命令,它们是lspci
、lsblk
、lscpu
和 lsusb
。
lspci 命令
从命令的名称ls+pci的组合上大致也能看出来,lspci
用于显示有关系统中的PCI总线以及与其连接的设备的信息。默认情况下,它显示设备的简短列表,如果配合指定的选项使用可以显示输出更详细的信息。
语法格式:
lspci [参数]
常用参数:
选项 | 描述 |
---|---|
-n | 以数字方式显示PCI厂商和设备代码 |
-t | 以树状结构显示PCI设备的层次关系 |
-b | 以总线为中心的视图 |
-s | 仅显示指定总线插槽的设备和功能块信息 |
-i | 指定PCI编号列表文件,不使用默认文件 |
-m | 以机器可读方式显示PCI设备信息 |
使用示例:
默认情况下终端中直接输入该命令,显示当前主机的所有PCI总线信息:
lspci
输出类似如下:
00:00.0 Host bridge: Intel Corporation Xeon E7 v2/Xeon E5 v2/Core i7 DMI2 (rev 04)
00:01.0 PCI bridge: Intel Corporation Xeon E7 v2/Xeon E5 v2/Core i7 PCI Express Root Port 1a (rev 04)
00:02.0 PCI bridge: Intel Corporation Xeon E7 v2/Xeon E5 v2/Core i7 PCI Express Root Port 2a (rev 04)
00:02.2 PCI bridge: Intel Corporation Xeon E7 v2/Xeon E5 v2/Core i7 PCI Express Root Port 2c (rev 04)
00:03.0 PCI bridge: Intel Corporation Xeon E7 v2/Xeon E5 v2/Core i7 PCI Express Root Port 3a (rev 04)
00:05.0 System peripheral: Intel Corporation Xeon E7 v2/Xeon E5 v2/Core i7 VTd/Memory Map/Misc (rev 04)
00:05.2 System peripheral: Intel Corporation Xeon E7 v2/Xeon E5 v2/Core i7 IIO RAS (rev 04)
00:05.4 PIC: Intel Corporation Xeon E7 v2/Xeon E5 v2/Core i7 IOAPIC (rev 04)
.....
以树状结构显示PCI设备的层次关系:
lspci -t
输出:
-+-[0000:ff]-+-08.0
| +-09.0
| +-0a.0
| +-0a.1
| +-0a.2
| +-0a.3
| +-0b.0
| +-0b.3
| +-0c.0
| +-0c.1
| +-0c.2
| +-0c.3
| +-0d.0
| +-0d.1
| +-0d.2
| +-0d.3
| +-0e.0
| +-0e.1
| +-0f.0
| +-0f.1
| +-0f.2
| +-0f.3
| +-0f.4
| +-0f.5
| +-10.0
| +-10.1
| +-10.2
| +-10.3
| +-10.4
| +-10.5
| +-10.7
| +-13.0
| +-13.1
| +-13.4
| +-13.5
| +-16.0
| +-16.1
| \-16.2
+-[0000:80]-+-00.0-[81]--
| +-05.0
| +-05.2
| \-05.4
......
如果想得到更详细的信息,可以使用如下命令:
lspci -vvx
-vv
:使得 lspci 以过冗余模式显示更详细的信息 (事实上是 PCI 设备能给出的所有东西)。这些数据的确切意义没有在此手册页中解释,如果你想知道更多,请参照 /usr/include/linux/pci.h 或者 PCI 规范。
-x
:以十六进制显示 PCI 配置空间 (configuration space) 的前64个字节映象 (标准头部信息)。此参数对调试驱动和lspci
本身很有用。
更多关于lspci中说参数说明可以在终端中通过man lspci
来查看。
lsblk命令
lsblk列出有关所有或指定块设备的信息,lsblk列出有关所有或指定块设备的信息。默认情况下,该命令以树状格式打印所有设备(RAM磁盘除外)。
语法格式:
lsblk [参数]
使用示例:
默认情况下直接输入命令,类似如下:
lsblk
输出:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 1.1T 0 disk
├─sda1 8:1 0 500M 0 part /boot
├─sda2 8:2 0 31.3G 0 part [SWAP]
└─sda3 8:3 0 1.1T 0 part /
sr0 11:0 1 1024M 0 rom
-
NAME
: 这是块设备名。 -
MAJ:MIN
: 本栏显示主要和次要设备号。 -
RM
: 本栏显示设备是否可移动设备。注意,在本例中设备sdb和sr0的RM值等于1,这说明他们是可移动设备。 -
SIZE
: 本栏列出设备的容量大小信息。例如298.1G表明该设备大小为298.1GB,而1K表明该设备大小为1KB。 -
RO
: 该项表明设备是否为只读。在本案例中,所有设备的RO值为0,表明他们不是只读的。 -
TYPE
:本栏显示块设备是否是磁盘或磁盘上的一个分区。在本例中,sda和sdb是磁盘,而sr0是只读存储(rom)。 -
MOUNTPOINT
: 本栏指出设备挂载的挂载点。
也可以列出指定设备的信息:
lsblk /dev/sda
输出类似:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 1.1T 0 disk
├─sda1 8:1 0 500M 0 part /boot
├─sda2 8:2 0 31.3G 0 part [SWAP]
└─sda3 8:3 0 1.1T 0 part /
lsblk命令也可以用于列出一个特定设备的拥有关系,同时也可以列出组和模式。可以通过以下命令来获取这些信息:
lsblk -m
输出:
NAME SIZE OWNER GROUP MODE
sda 1.1T root disk brw-rw----
├─sda1 500M root disk brw-rw----
├─sda2 31.3G root disk brw-rw----
└─sda3 1.1T root disk brw-rw----
sr0 1024M root cdrom brw-rw----
更多信息可以在终端中输入man lsblk
查看。
lscpu命令
此命令用来显示cpu的相关信息 ,lscpu从sysfs和/proc/cpuinfo收集cpu体系结构信息,命令的输出比较易读。lscpu命令输出的信息包含cpu数量,线程,核数,套接字和Nom-Uniform Memeor Access(NUMA),缓存等 ,不是所有的列都支持所有的架构,如果指定了不支持的列,那么lscpu将打印列,但不显示数据 。
语法格式:
lscpu [参数]
常用参数:
参数 | 说明 |
---|---|
-a | 打印在线和离线的CPU |
-b | 仅打印在线CPU |
-c | 仅打印离线CPU |
-h | 打印帮助并退出 |
-V | 打印当前版本号 |
默认情况下,终端中直接输入命令:
lscpu
输出内容类似如下:
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 32
On-line CPU(s) list: 0-31
Thread(s) per core: 2
Core(s) per socket: 8
Socket(s): 2
NUMA node(s): 2
Vendor ID: GenuineIntel
CPU family: 6
Model: 62
Model name: Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60GHz
Stepping: 4
CPU MHz: 1200.000
BogoMIPS: 5187.29
Virtualization: VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 20480K
NUMA node0 CPU(s): 0-7,16-23
NUMA node1 CPU(s): 8-15,24-31
更多命令详细说明,可以在终端中输入man lscpu
命令查看。
lsusb命令
lsusb命令用于显示本机的USB设备列表,以及USB设备的详细信息。lsusb命令显示的USB设备信息来自“/proc/bus/usb”目录下的对应文件。
语法格式:
lsusb [参数]
常用参数:
选项 | 描述 |
---|---|
-v | 显示USB设备的详细信息 |
-s<总线:设备号> | 仅显示指定的总线和(或)设备号的设备 |
-d<厂商:产品> | 仅显示指定厂商和产品编号的设备 |
-t | 以树状结构显示无理USB设备的层次 |
-V | 显示命令的版本信息 |
使用示例:
默认情况下,在终端中直接输入命令:
lsusb
显示USB设备列表:
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 003: ID 046b:ff10 American Megatrends, Inc. Virtual Keyboard and Mouse
Bus 002 Device 003: ID 0424:2513 Standard Microsystems Corp. 2.0 Hub
以树状显示USB设备列表:
lsusb -t
输出:
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ehci_hcd/2p, 480M
|__ Port 1: Dev 2, If 0, Class=hub, Driver=hub/8p, 480M
|__ Port 5: Dev 3, If 0, Class=hub, Driver=hub/3p, 480M
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci_hcd/2p, 480M
|__ Port 1: Dev 2, If 0, Class=hub, Driver=hub/6p, 480M
|__ Port 6: Dev 3, If 0, Class=HID, Driver=usbhid, 12M
|__ Port 6: Dev 3, If 1, Class=HID, Driver=usbhid, 12M
显示USB设备详细信息:
lsusb -v
输出类似:
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 9 Hub
bDeviceSubClass 0 Unused
bDeviceProtocol 0 Full speed (or root) hub
bMaxPacketSize0 64
idVendor 0x1d6b Linux Foundation
idProduct 0x0002 2.0 root hub
bcdDevice 2.06
iManufacturer 3 Linux 2.6.32-642.el6.x86_64 ehci_hcd
iProduct 2 EHCI Host Controller
iSerial 1 0000:00:1a.0
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 25
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0xe0
Self Powered
Remote Wakeup
MaxPower 0mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 9 Hub
bInterfaceSubClass 0 Unused
bInterfaceProtocol 0 Full speed (or root) hub
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0004 1x 4 bytes
bInterval 12
Hub Descriptor:
......
更多关于lsusb命令的详细描述可以在终端中输入man lsusb
查看。
写在最后
本文主要讲解了lspci
、lsblk
、lscpu
和 lsusb
在Linux中查看相关硬件信息的命令,希望通过本文让您对这些命令有一个初步了解,也能知道在Linux系统中查询信息信息的方式,希望读您有所帮助。
如果想了解更多Linux中命令使用,可以下载Linux命令中文手册,关注我后,公号里面回复“命令”即可下载。
Dmidecode: 在 Linux 下获取硬件信息
Dmidecode 这款软件允许你在 Linux 系统下获取有关硬件方面的信息。Dmidecode 遵循 SMBIOS/DMI 标准,其输出的信息包括 BIOS、系统、主板、处理器、内存、缓存等等。
Dmidecode 应该在主流的 Linux 发行版中都可以找到,因此你只需通过所用发行版的包管理器安装即可,如:
aptitude install dmidecode # Debian/Ubuntu
yum install dmidecode # Fedora
pacman -S dmidecode # Arch Linux
emerge -av dmidecode # Gentoo
不带选项执行 dmidecode
通常会输出所有的硬件信息,以下是在笔者机器上执行 dmidecode 后所得到的结果(部分):
\# dmidecode 2.10 SMBIOS 2.3 present. 26 structures occupying 1285 bytes. Table at 0x000FC010. Handle 0x0000, DMI type 0, 24 bytes BIOS Information Vendor: American Megatrends Inc. Version: 080012 Release Date: 02/06/2007 Address: 0xF0000 Runtime Size: 64 kB ROM Size: 512 kB ...
Dmidecode 有个很有用的选项 -t,可以按指定类型输出相关信息,假如要获得处理器方面的信息,则可以执行
dmidecode -t processor
输出:
# dmidecode 2.10 SMBIOS 2.3 present. Handle 0x0004, DMI type 4, 35 bytes Processor Information Socket Designation: CPU 1 Type: Central Processor Family: Unknown Manufacturer: Intel ID: F2 06 00 00 FF FB EB BF Version: Genuine Intel(R) CPU 2140 @ 1.60GHz Voltage: 1.3 V External Clock: 200 MHz Max Speed: 1600 MHz Current Speed: 1600 MHz Status: Populated, Enabled Upgrade: Other L1 Cache Handle: 0x0005 L2 Cache Handle: 0x0006 L3 Cache Handle: 0x0007 Serial Number: To Be Filled By O.E.M. Asset Tag: To Be Filled By O.E.M. Part Number: To Be Filled By O.E.M.
关于 Dmidecode 的更多用法,你可以通过指定 -h 选项查询。
原文出处:http://linuxtoy.org/archives/dmidecode.html
Inxi:获取Linux系统和硬件信息的神器
在这篇文章里,我们将看到如何使用inxi来获取这些详情信息。在论坛技术支持中,它可以作为调试工具,迅速确定用户的系统配置和硬件信息。 |
Inxi是一个可以获取完整的系统和硬件详情信息的命令行工具,内容包括:
- 硬件
- CPU
- 磁盘驱动器
- Xorg
- 桌面环境
- 内核
- GCC版本
- 进程
- 内存占用
- 和其他有用的信息
Inxi在多数现代GNU/Linux操作系统的默认软件仓库中。所以,我们可以简单地运行下列命令安装。
sudo apt-get install inxi
sudo yum install inxi
安装EPEL软件仓库:
sudo yum install epel-release
然后使用如下命令安装inxi:
sudo yum install inxi
在终端运行如下命令可以获取系统的概况信息。
inxi
示例输出:
当然,我们可以获取一个特定硬件的详情信息。比如获取声音/音频硬件详情信息,可以运行如下命令:
inxi-A
示例输出:
Sound: Advanced Linux Sound Architecture ver: k3.13.0-45-generic
同样的,你可以获取显卡的详情信息。
inxi -G
示例输出:
X.Org:1.15.1 drivers: intel (unloaded: fbdev,vesa)Resolution:1366x768@60.0hz
GLX Renderer:Mesa DRI IntelSandybridgeMobile GLX Version:3.0Mesa10.3.0
硬盘信息呢?也是可以的。运行如下命令来获取完整的硬盘信息。
inxi -D
示例输出:
显示Bios和主板详情信息:
inxi -M
示例输出:
Mobo: Dell model: 01HXXJ version: A05 Bios: Dell version: A05 date: 08/03/2012
不仅是硬性详情信息,它也可以显示我们系统中的可用软件仓库列表。
inxi -r
示例输出:
deb http://ubuntu.excellmedia.net/archive/ trusty main restricted
deb-src http://ubuntu.excellmedia.net/archive/ trusty main restricted
deb http://ubuntu.excellmedia.net/archive/ trusty-updates main restricted
deb-src http://ubuntu.excellmedia.net/archive/ trusty-updates main restricted
deb http://ubuntu.excellmedia.net/archive/ trusty universe
.
.
Active apt sources n file: /etc/apt/sources.list.d/intellinuxgraphics.list
deb https://download.01.org/gfx/ubuntu/14.04/main trusty main #Intel Graphics drivers
Active apt sources n file: /etc/apt/sources.list.d/linrunner-tlp-trusty.list
Active apt sources n file: /etc/apt/sources.list.d/wseverin-ppa-trusty.list
deb http://ppa.launchpad.net/wseverin/ppa/ubuntu trusty main
Inxi还可以显示你所在位置的天气信息。感到意外吗?是的,它可以。
inxi -W Erode,Tamilnadu
这里Erode是地区,Tamilnadu是印度的一个邦。
示例输出:
厌倦了逐一获取每种硬件的信息?你可以使用如下命令将所有信息一次列出:
inxi-F
示例输出:
Machine: System: Dell (portable) product: Inspiron N5050
Mobo: Dell model: 01HXXJ version: A05 Bios: Dell version: A05 date: 08/03/2012
CPU: Dual core Intel Core i3-2350M CPU (-HT-MCP-) cache: 3072 KB flags: (lm nx sse sse2 sse3 sse4_1 sse4_2 ssse3 vmx)
Clock Speeds: 1: 800.00 MHz 2: 1000.00 MHz 3: 800.00 MHz 4: 800.00 MHz
Graphics: Card: Intel 2nd Generation Core Processor Family Integrated Graphics Controller
X.Org: 1.15.1 drivers: intel (unloaded: fbdev,vesa) Resolution: 1366x768@60.0hz
GLX Renderer: Mesa DRI Intel Sandybridge Mobile GLX Version: 3.0 Mesa 10.3.0
Audio: Card: Intel 6 Series/C200 Series Family High Definition Audio Controller driver: snd_hda_intel
Sound: Advanced Linux Sound Architecture ver: k3.13.0-45-generic
Network: Card-1: Qualcomm Atheros AR9285 Wireless Network Adapter (PCI-Express) driver: ath9k
IF: wlan0 state: up mac:
Card-2: Realtek RTL8101E/RTL8102E PCI Express Fast Ethernet controller driver: r8169
IF: eth0 state: down mac:
Drives: HDD Total Size: 500.1GB (52.5% used) 1: id: /dev/sda model: ST9500325AS size: 500.1GB
Partition: ID: / size: 455G used: 245G (57%) fs: ext4 ID: /boot size: 236M used: 159M (72%) fs: ext2
ID: swap-1 size: 4.19GB used: 0.00GB (0%) fs: swap
RAID: No RAID devices detected - /proc/mdstat and md_mod kernel raid module present
Sensors: System Temperatures: cpu: 64.5C mobo: N/A
Fan Speeds (in rpm): cpu: N/A
Info: Processes: 186 Uptime: 6:52 Memory: 1547.2/3861.3MB Client: Shell (bash) inxi: 1.9.17
就像上面你看到的那样,inxi显示出了完整的硬件详情信息。
更多的细节可以参考man手册。
man inxi
你在寻找一个可以显示完整的系统和硬件详情信息的简单工具吗?那么不用再找了,inxi会提供你所需要的。并且,它还是在你系统默认的软件仓库中的轻量级工具。你还想要更多东西吗?试一试它,你不会失望。
欢呼吧!
本文地址: https://www.linuxprobe.com/inxi-access-linux.html
Linux C 获取硬件信息的一些方法
Linux get hardware information over C
ioctl(input output controller)函数获取磁盘信息
- 出现同一份代码RedHat上可以拿到
/dev/sda
serial number, 在Ubuntu上出错
获取主板信息
出现有些主板找不到serial number,暂时有两种方法:
- dmidecode工具,github.com上有repo fork
- 从
/sys/class/dmi/id/
中直接读取
get mac info
获得Unix/Linux系统中的IP、MAC地址等信息
_
.. _获得Unix/Linux系统中的IP、MAC地址等信息: http://programmerdigest.cn/2010/07/1050.html
- ioctl函数没有纳入POXIS规范,各系统对ioctl的实现也不尽相同
- ioctl函数的参数只有3个,但却是Unix中少有的几个“家族类”复杂函数.在传统上ioctl函数是用于那些普遍使用、但不适合归入其他类别的任何特殊的系统接口……网络程序(一般是服务器程序)中ioctl常用于在程序启动时获得主机上所有接口的信息:接口的地址、接口是否支持广播、是否支持多播,等等。
get cpu info
- 方法一:C语言内部实现,使用
libcpuid库
_
.. _libcpuid库: http://libcpuid.sourceforge.net/
.. code-block:: c
struct cpu_raw_data_t raw;
struct cpu_id_t data;
if (cpuid_get_raw_data(&raw) < 0) {
printf("Sorry, cannot get the CPUID raw data.\n");
printf("Error: %s\n", cpuid_error());
return -2;
}
if (cpu_identify(&raw, &data) < 0) {
printf("Sorrry, CPU identification failed.\n");
printf("Error: %s\n", cpuid_error());
return -3;
}
printf("Found: %s CPU\n", data.vendor_str);
printf("Processor model is `%s''\n", data.cpu_codename);
printf("The full brand string is `%s''\n", data.brand_str);
printf("The processor has %dK L1 cache and %dK L2 cache\n", data.l1_data_cache, data.l2_cache);
- 方法二:从
/proc/cpuinfo
中直接读取,/proc/cpuinfo
的信息的格式说明在kernel中的代码
_
.. _信息的格式说明在kernel中的代码: http://lxr.free-electrons.com/source/arch/x86/kernel/cpu/proc.c#L57
.. code-block:: c
#define _GNU_SOURCE
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char **argv)
{
FILE *cmdline = fopen("/proc/cpuinfo", "rb");
char *arg = 0;
size_t size = 0;
while(getdelim(&arg, &size, 0, cmdline) != -1)
{
puts(arg);
}
free(arg);
fclose(cmdline);
return 0;
}
判断是否虚拟机
使用RedHat virt-what工具/库,此工具可以判断很多VM
.. code-block:: c
#if defined(__i386__) || defined(__x86_64__)
static unsigned int
cpuid (unsigned int eax, char *sig)
{
unsigned int *sig32 = (unsigned int *) sig;
asm volatile (
"xchgl %%ebx,%1; xor %%ebx,%%ebx; cpuid; xchgl %%ebx,%1"
: "=a" (eax), "+r" (sig32[0]), "=c" (sig32[1]), "=d" (sig32[2])
: "0" (eax));
sig[12] = 0;
return eax;
}
static void
cpu_sig (char* sig)
{
unsigned int base = 0x40000000, leaf = base;
unsigned int max_entries;
memset (sig, 0, sizeof sig);
max_entries = cpuid (leaf, sig);
puts (sig);
// return for determine
if(strlen(siq) > 0){
return;
}
/* Most hypervisors only have information in leaf 0x40000000, but
* upstream Xen contains further leaf entries (in particular when
* used with Viridian [HyperV] extensions). CPUID is supposed to
* return the maximum leaf offset in %eax, so that''s what we use,
* but only if it looks sensible.
*/
if (max_entries > 3 && max_entries < 0x10000) {
for (leaf = base + 0x100; leaf <= base + max_entries; leaf += 0x100) {
memset (sig, 0, sizeof sig);
cpuid (leaf, sig);
puts (sig);
// if not empty, is ok
if(strlen(sig) > 0){
return;
}
}
}
}
#else /* !i386, !x86_64 */
static void
cpu_sig (void)
{
/* nothing for other architectures */
}
#endif
系统所在磁盘信息
先从 /etc/mtab
获取 /boot
所在硬盘,然后用 ioctl
获取,未确定此方式的稳定性
.. code-block:: c
FILE *fp;
char disk_name[10];
char str_find[] = "/boot";
char buf_line[128];
static struct hd_driveid hd;
int fd;
int tmp_len = 0;
fp = fopen ("/etc/mtab", "rb");
if (fp == NULL)
{
fprintf(stderr, "No /etc/mtab file.\n");
return 0;
}
while(fgets(buf_line, sizeof(buf_line), fp)) {
if(strstr(buf_line, str_find) != NULL){
printf("debug: %s\n", buf_line);
break;
}
}
// TODO "/boot" extract
if(sscanf(buf_line, "%s /boot", disk_name) == -1)
{
printf("Error: can not get disk name\n");
}
// delete number, e.g. /dev/sda1
tmp_len = strlen(disk_name);
disk_name[tmp_len -1 ] = ''\0'';
if (geteuid() > 0) {
printf("ERROR: Must be root to use\n");
exit(1);
}
// TODO
if ((fd = open(disk_name, O_RDONLY|O_NONBLOCK)) < 0) {
printf("ERROR: Cannot open device %s\n", disk_name);
exit(1);
}
if (!ioctl(fd, HDIO_GET_IDENTITY, &hd)) {
const int nSNLength = 20;
strSN = "";
for(int i=0; i < nSNLength; i++){
if(hd.serial_no[i] < 32 || hd.serial_no[i] == 127)
{
strSN += ''.'';
}
else{
strSN += (char)hd.serial_no[i];
}
}
printf("debug: Disk Serial Number: %.20s\n", strSN.GetData());
return 1;
} else if (errno == -ENOMSG) {
printf("No hard disk identification information available\n");
return 0;
} else {
perror("ERROR: HDIO_GET_IDENTITY");
exit(1);
}
PS: 虽rst与markdown格式相近,但OSC对rst不支持,很多地方没渲染啊。
linux – 获取ubuntu服务器的服务器硬件详细信息
谢谢.
解决方法
cat /proc/meminfo
cat /proc/cpuinfo
今天的关于Linux中几个获取硬件详细信息的命令和linux中几个获取硬件详细信息的命令是的分享已经结束,谢谢您的关注,如果想了解更多关于Dmidecode: 在 Linux 下获取硬件信息、Inxi:获取Linux系统和硬件信息的神器、Linux C 获取硬件信息的一些方法、linux – 获取ubuntu服务器的服务器硬件详细信息的相关知识,请在本站进行查询。
本文标签: