【问题标题】:How do I get hardware information on Linux/Unix?如何获取 Linux/Unix 上的硬件信息?
【发布时间】:2010-12-16 04:53:29
【问题描述】:

如何从 Linux / Unix 机器获取硬​​件信息。 有没有一套 API?

我正在尝试获取以下信息:

  • 操作系统名称。
  • 操作系统版本。
  • 可用的网络适配器。
  • 有关网络适配器的信息。
  • 所有已安装的软件。

我正在寻找一个应用程序来收集这些信息并以良好的格式显示它。 我使用了与 Mac OS X 的“system_profile”命令行工具类似的东西。我 想知道类似的东西是否也适用于 Linux。

【问题讨论】:

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

标签: c++ c linux unix system


【解决方案1】:

有个 bash 命令 lshw -list hardware

【讨论】:

  • 在某些情况下,lshw 可能不可用,但提供类似信息的 dmidecode 通常可用(我在考虑 VMware ESX 虚拟机管理程序)。
  • @Unicorn,能不能具体说一下你要提取的硬件信息?
【解决方案2】:

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

HAL 并不是“linux”的真正标准部分,但我认为大多数现代发行版都在使用它。

【讨论】:

    【解决方案3】:

    如果您需要一个简单的答案,请使用:

    • cat /proc/cpuinfo
    • cat /proc/meminfo
    • lspci
    • lsusb

    并从这些命令的输出中获取您需要的任何信息。 (注意:cut 命令可能是你写 shell 脚本的朋友。)

    如果您需要更多详细信息,请添加 -v 开关以从 lspcilsusb 命令获取详细输出。

    如果您正在寻找功能更完整的 API,那么请使用 HAL,尽管这对于您正在尝试构建的东西来说可能是多余的。

    【讨论】:

    • 或者用漂亮的脚本语言编写一些脚本,以您想要的方式获取和格式化数据。不要忘记为网络适配器信息添加 ifconfig。
    【解决方案4】:

    如果您正在寻找显示系统信息的工具,HardInfo 之类的 GUI 工具对您很有用。

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

    sudo apt-get install hardinfo

    干杯

    【讨论】:

      【解决方案5】:

      既然您提到了 API,请尝试 C 的 exec 系列命令。您可以使用它们来执行其他人提到的这些二进制文件。要创建一个健壮/灵活的解决方案,您可能还必须利用 Unix fork() 命令。您还必须开发一种机制来捕获这些实用程序发出的输出。为此请查看 Unix 管道。

      【讨论】:

        【解决方案6】:

        试试sudo lshw。 这是最简单的。

        【讨论】:

          【解决方案7】:

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

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

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

          【讨论】:

            猜你喜欢
            • 2011-07-08
            • 1970-01-01
            • 2010-10-28
            • 2013-04-14
            • 2017-11-07
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-08-06
            相关资源
            最近更新 更多