在Linux/Unix上如何获取硬件信息?

7
我如何从Linux/Unix机器中获取硬件信息?是否有一组API?
我正在尝试获取以下信息:
- 操作系统名称。 - 操作系统版本。 - 可用网络适配器。 - 网络适配器信息。 - 所有已安装的软件。
我正在寻找一个可以收集此信息并以良好格式显示的应用程序。我曾经使用过类似于Mac OS X的“system_profile”命令行工具。我想知道是否也有类似于Linux的工具。

有很多种方法,从命令行工具到内核API调用。除非您告诉我们您想要做什么,否则任何答案都只能是猜测。 - DevSolar
7个回答

16
如果你需要简单的答案,请使用以下命令:
  • cat /proc/cpuinfo
  • cat /proc/meminfo
  • lspci
  • lsusb
从这些命令的输出中收集所需信息即可。如果你正在编写shell脚本,注意到cut命令可能会对你有所帮助。
如果需要更详细的信息,请添加-v开关以获取lspcilsusb命令的详细输出。
如果你想要一个更全面的API,那么使用HAL可能会过度复杂化你正在构建的东西。

1
或者使用一种好的脚本语言编写一些脚本,以获取并格式化您想要的数据。不要忘记添加ifconfig以获取网络适配器信息。 - Ferenc Deak

8

如果您正在寻找一款显示系统信息的工具,像HardInfo这样的GUI工具会对您有所帮助。

在Ubuntu中,您可以像这样安装HardInfo...

sudo apt-get install hardinfo

干杯


7

有一个bash命令叫lshw,可以列出硬件信息。


在某些情况下,lshw 可能不可用,但提供类似信息的 dmidecode 通常是可用的(我在考虑 VMware ESX hypervisors)。 - Suppressingfire
@Unicorn,你能更具体地说明你想要提取的硬件信息吗? - Suppressingfire

2

我会使用硬件抽象层(HAL),它包含了一些GUI命令、一些tty命令(可从shell程序中使用),以及C语言和多种其他语言的库绑定。

HAL并不是Linux的标准部分,但我认为它被大多数现代发行版使用。


1
尝试使用sudo lshw命令。这是最简单的方法。

0

既然你提到了 API,试试 C 语言中的 exec 命令族。你可以使用它们来执行其他人提到的这些二进制文件。为了创建一个健壮且灵活的解决方案,你还需要利用 Unix 的 fork() 命令。你还需要开发一种机制来捕获这些实用工具输出的内容。研究一下 Unix 管道相关知识。


0

您可以使用inxi,它提供了所有硬件信息,包括CPU温度等。

在基于Red Hat的操作系统上安装 sudo dnf install inixi

在基于Debian的操作系统上安装 apt-get install inxi


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接