Search code examples
c++clinuxunixsystem

How do I get hardware information on Linux/Unix?


How I can get hardware information from a Linux / Unix machine. Is there a set of APIs?

I am trying to get information like:

  • OS name.
  • OS version.
  • available network adapters.
  • information on network adapters.
  • all the installed software.

I am looking for an application which collects this information and show it in a nice format. I have used something similar with the "system_profile" command line tool for Mac OS X. I was wondering if something similar is available for Linux as well.


Solution

  • If you need a simple answer, use:

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

    and harvest any info you need from the output of these commands. (Note: the cut command may be your friend here if you are writing a shell script.)

    Should you need more detail, add a -v switch to get verbose output from the lspci and lsusb commands.

    If what you are looking for is a more feature-complete API, then use HAL, though that may be an overkill for what you are trying to build.