It is always a good practice to know the hardware components of your Linux system running, this helps you to deal with compatibility issues when it comes to installing packages, and drivers on your system using yum, dnf, or apt.
In this article, we shall look at some useful Linux commands that can help you to extract information about your Linux system and hardware components.
1. How to View Linux System Information
To know only the system name, you can use the uname command without any switch that will print system information or the uname -s command will print the kernel name of your system.
tecmint@tecmint ~ $ uname Linux
To view your Linux network hostname, use the ‘-n’ switch with the uname command as shown.
tecmint@tecmint ~ $ uname -n tecmint.com
To get information about the Linux kernel version, use the ‘-v’ switch.
tecmint@tecmint ~ $ uname -v #64-Ubuntu SMP Mon Sep 22 21:28:38 UTC 2014
To get the information about your Linux kernel release, use the ‘-r’ switch.
tecmint@tecmint ~ $ uname -r 3.13.0-37-generic
To print your Linux hardware architecture name, use the ‘-m’ switch:
tecmint@tecmint ~ $ uname -m x86_64
All this information can be printed at once by running the ‘uname -a’ command as shown below.
tecmint@tecmint ~ $ uname -a Linux tecmint.com 3.13.0-37-generic #64-Ubuntu SMP Mon Sep 22 21:28:38 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
2. How to View Linux System Hardware Information
Here you can use the lshw tool to gather vast information about your hardware components such as cpu, disks, memory, usb controllers, etc.
lshw is a relatively small tool and there are a few options that you can use with it while extracting information. The information provided by lshw was gathered from different /proc files.
To print information about your Linux system hardware, run the following command.
tecmint@tecmint ~ $ sudo lshw tecmint.com description: Notebook product: 20354 (LENOVO_MT_20354_BU_idea_FM_Lenovo Z50-70) vendor: LENOVO version: Lenovo Z50-70 serial: 1037407803441 width: 64 bits capabilities: smbios-2.7 dmi-2.7 vsyscall32 configuration: administrator_password=disabled boot=normal chassis=notebook family=IDEAPAD frontpanel_password=disabled keyboard_password=disabled power-on_password=disabled sku=LENOVO_MT_20354_BU_idea_FM_Lenovo Z50-70 uuid=E4B1D229-D237-E411-9F6E-28D244EBBD98 *-core description: Motherboard product: Lancer 5A5 vendor: LENOVO physical id: 0 version: 31900059WIN serial: YB06377069 slot: Type2 - Board Chassis Location *-firmware description: BIOS vendor: LENOVO physical id: 0 version: 9BCN26WW date: 07/31/2014 size: 128KiB capacity: 4032KiB capabilities: pci upgrade shadowing cdboot bootselect edd int13floppytoshiba int13floppy360 int13floppy1200 int13floppy720 int13floppy2880 int9keyboard int10video acpi usb biosbootspecification uefi ......
You can print a summary of your hardware information by using the -short
option.
tecmint@tecmint ~ $ sudo lshw -short H/W path Device Class Description ===================================================== system 20354 (LENOVO_MT_20354_ BU_idea_FM_Lenovo Z50-70) /0 bus Lancer 5A5 /0/0 memory 128KiB BIOS /0/4 processor Intel(R) Core(TM) i5-4210U CPU @ 1.70GHz /0/4/b memory 32KiB L1 cache /0/4/c memory 256KiB L2 cache /0/4/d memory 3MiB L3 cache /0/a memory 32KiB L1 cache /0/12 memory 8GiB System Memory /0/12/0 memory DIMM [empty] /0/12/1 memory DIMM [empty] /0/12/2 memory 8GiB SODIMM DDR3 Synchronous 1600 MHz (0.6 ns) /0/12/3 memory DIMM [empty] /0/100 bridge Haswell-ULT DRAM Controller /0/100/2 display Haswell-ULT Integrated Graphics Controller /0/100/3 multimedia Haswell-ULT HD Audio Controller ...
If you wish to generate output as an html file, you can use the option -html
.
tecmint@tecmint ~ $ sudo lshw -html > lshw.html
3. How to View Linux CPU Information
To view information about your CPU, use the lscpu command as it shows information about your CPU architecture such as the number of CPUs, cores, CPU family model, CPU caches, threads, etc from sysfs and /proc/cpuinfo.
tecmint@tecmint ~ $ lscpu Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Byte Order: Little Endian CPU(s): 4 On-line CPU(s) list: 0-3 Thread(s) per core: 2 Core(s) per socket: 2 Socket(s): 1 NUMA node(s): 1 Vendor ID: GenuineIntel CPU family: 6 Model: 69 Stepping: 1 CPU MHz: 768.000 BogoMIPS: 4788.72 Virtualization: VT-x L1d cache: 32K L1i cache: 32K L2 cache: 256K L3 cache: 3072K NUMA node0 CPU(s): 0-3
4. How to Collect Linux Block Device Information
Block devices are storage devices such as hard disks, flash drives, etc. lsblk command is used to report information about block devices as follows.
tecmint@tecmint ~ $ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 931.5G 0 disk ├─sda1 8:1 0 1000M 0 part ├─sda2 8:2 0 260M 0 part /boot/efi ├─sda3 8:3 0 1000M 0 part ├─sda4 8:4 0 128M 0 part ├─sda5 8:5 0 557.1G 0 part ├─sda6 8:6 0 25G 0 part ├─sda7 8:7 0 14.7G 0 part ├─sda8 8:8 0 1M 0 part ├─sda9 8:9 0 324.5G 0 part / └─sda10 8:10 0 7.9G 0 part [SWAP] sr0 11:0 1 1024M 0 rom
If you want to view all block devices on your system then include the -a
option.
tecmint@tecmint ~ $ lsblk -a NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 931.5G 0 disk ├─sda1 8:1 0 1000M 0 part ├─sda2 8:2 0 260M 0 part /boot/efi ├─sda3 8:3 0 1000M 0 part ├─sda4 8:4 0 128M 0 part ├─sda5 8:5 0 557.1G 0 part ├─sda6 8:6 0 25G 0 part ├─sda7 8:7 0 14.7G 0 part ├─sda8 8:8 0 1M 0 part ├─sda9 8:9 0 324.5G 0 part / └─sda10 8:10 0 7.9G 0 part [SWAP] sdb 8:16 1 0 disk sr0 11:0 1 1024M 0 rom ram0 1:0 0 64M 0 disk ram1 1:1 0 64M 0 disk ram2 1:2 0 64M 0 disk ram3 1:3 0 64M 0 disk ram4 1:4 0 64M 0 disk ram5 1:5 0 64M 0 disk ram6 1:6 0 64M 0 disk ram7 1:7 0 64M 0 disk ram8 1:8 0 64M 0 disk ram9 1:9 0 64M 0 disk loop0 7:0 0 0 loop loop1 7:1 0 0 loop loop2 7:2 0 0 loop loop3 7:3 0 0 loop loop4 7:4 0 0 loop loop5 7:5 0 0 loop loop6 7:6 0 0 loop loop7 7:7 0 0 loop ram10 1:10 0 64M 0 disk ram11 1:11 0 64M 0 disk ram12 1:12 0 64M 0 disk ram13 1:13 0 64M 0 disk ram14 1:14 0 64M 0 disk ram15 1:15 0 64M 0 disk
5. How to Check USB Controller in Linux
The lsusb command is used to report information about USB controllers and all the devices that are connected to them.
tecmint@tecmint ~ $ lsusb Bus 001 Device 002: ID 8087:8000 Intel Corp. Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 003 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 002 Device 005: ID 0bda:b728 Realtek Semiconductor Corp. Bus 002 Device 004: ID 5986:0249 Acer, Inc Bus 002 Device 003: ID 0bda:0129 Realtek Semiconductor Corp. RTS5129 Card Reader Controller Bus 002 Device 002: ID 045e:00cb Microsoft Corp. Basic Optical Mouse v2.0 Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
You can use the -v
option to generate detailed information about each USB device.
tecmint@tecmint ~ $ lsusb -v
6. How to Check PCI Devices in Linux
PCI devices may include usb ports, graphics cards, network adapters, etc. The lspci tool is used to generate information concerning all PCI controllers on your system plus the devices that are connected to them.
To print information about PCI devices run the following command.
tecmint@tecmint ~ $ lspci 00:00.0 Host bridge: Intel Corporation Haswell-ULT DRAM Controller (rev 0b) 00:02.0 VGA compatible controller: Intel Corporation Haswell-ULT Integrated Graphics Controller (rev 0b) 00:03.0 Audio device: Intel Corporation Haswell-ULT HD Audio Controller (rev 0b) 00:14.0 USB controller: Intel Corporation Lynx Point-LP USB xHCI HC (rev 04) 00:16.0 Communication controller: Intel Corporation Lynx Point-LP HECI #0 (rev 04) 00:1b.0 Audio device: Intel Corporation Lynx Point-LP HD Audio Controller (rev 04) 00:1c.0 PCI bridge: Intel Corporation Lynx Point-LP PCI Express Root Port 3 (rev e4) 00:1c.3 PCI bridge: Intel Corporation Lynx Point-LP PCI Express Root Port 4 (rev e4) 00:1c.4 PCI bridge: Intel Corporation Lynx Point-LP PCI Express Root Port 5 (rev e4) 00:1d.0 USB controller: Intel Corporation Lynx Point-LP USB EHCI #1 (rev 04) 00:1f.0 ISA bridge: Intel Corporation Lynx Point-LP LPC Controller (rev 04) 00:1f.2 SATA controller: Intel Corporation Lynx Point-LP SATA Controller 1 [AHCI mode] (rev 04) 00:1f.3 SMBus: Intel Corporation Lynx Point-LP SMBus Controller (rev 04) 01:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 10) 02:00.0 Network controller: Realtek Semiconductor Co., Ltd. RTL8723BE PCIe Wireless Network Adapter 03:00.0 3D controller: NVIDIA Corporation GM108M [GeForce 840M] (rev a2)
Use the -t
option to produce output in a tree format.
tecmint@tecmint ~ $ lspci -t -[0000:00]-+-00.0 +-02.0 +-03.0 +-14.0 +-16.0 +-1b.0 +-1c.0-[01]----00.0 +-1c.3-[02]----00.0 +-1c.4-[03]----00.0 +-1d.0 +-1f.0 +-1f.2 \-1f.3
Use the -v
option to produce detailed information about each connected device.
tecmint@tecmint ~ $ lspci -v 00:00.0 Host bridge: Intel Corporation Haswell-ULT DRAM Controller (rev 0b) Subsystem: Lenovo Device 3978 Flags: bus master, fast devsel, latency 0 Capabilities: 00:02.0 VGA compatible controller: Intel Corporation Haswell-ULT Integrated Graphics Controller (rev 0b) (prog-if 00 [VGA controller]) Subsystem: Lenovo Device 380d Flags: bus master, fast devsel, latency 0, IRQ 62 Memory at c3000000 (64-bit, non-prefetchable) [size=4M] Memory at d0000000 (64-bit, prefetchable) [size=256M] I/O ports at 6000 [size=64] Expansion ROM at [disabled] Capabilities: Kernel driver in use: i915 .....
7. How to Check SCSI Devices in Linux
To view all your scsi/sata devices, use the lsscsi command as follows. If you do not have the lsscsi tool installed, run the following command to install it.
$ sudo apt-get install lsscsi [on Debian derivatives] # yum install lsscsi [On RedHat based systems] # dnf install lsscsi [On Fedora 21+ Onwards]
After installation, run the lsscsi command as shown:
tecmint@tecmint ~ $ lsscsi [0:0:0:0] disk ATA ST1000LM024 HN-M 2BA3 /dev/sda [1:0:0:0] cd/dvd PLDS DVD-RW DA8A5SH RL61 /dev/sr0 [4:0:0:0] disk Generic- xD/SD/M.S. 1.00 /dev/sdb
Use the -s
option to show device sizes.
tecmint@tecmint ~ $ lsscsi -s [0:0:0:0] disk ATA ST1000LM024 HN-M 2BA3 /dev/sda 1.00TB [1:0:0:0] cd/dvd PLDS DVD-RW DA8A5SH RL61 /dev/sr0 - [4:0:0:0] disk Generic- xD/SD/M.S. 1.00 /dev/sdb -
8. How to Check SATA Device in Linux
You can find some information about sata devices on your system as follows using the hdparm utility. In the example below, I used the block device /dev/sda1 which is the hard disk on my system.
tecmint@tecmint ~ $ sudo hdparm /dev/sda1 /dev/sda1: multcount = 0 (off) IO_support = 1 (32-bit) readonly = 0 (off) readahead = 256 (on) geometry = 56065/255/63, sectors = 2048000, start = 2048
To print information about device geometry in terms of cylinders, heads, sectors, size, and the starting offset of the device, use the -g
option.
tecmint@tecmint ~ $ sudo hdparm -g /dev/sda1 /dev/sda1: geometry = 56065/255/63, sectors = 2048000, start = 2048
9. How to Check Linux File System Information
To gather information about file system partitions, you can use the fdisk command. Although the main functionality of the fdisk command is to modify file system partitions, it can also be used to view information about the different partitions on your file system.
You can print partition information as follows. Remember to run the command as a superuser or else you may not see any output.
tecmint@tecmint ~ $ sudo fdisk -l WARNING: GPT (GUID Partition Table) detected on '/dev/sda'! The util fdisk doesn't support GPT. Use GNU Parted. Disk /dev/sda: 1000.2 GB, 1000204886016 bytes 255 heads, 63 sectors/track, 121601 cylinders, total 1953525168 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes Disk identifier: 0xcee8ad92 Device Boot Start End Blocks Id System /dev/sda1 1 1953525167 976762583+ ee GPT Partition 1 does not start on physical sector boundary.
10. How to Check Linux Hardware Components Info
You can also use the dmidecode utility to extract hardware information by reading data from the DMI tables.
To print information about Linux memory, run this command as a superuser.
tecmint@tecmint ~ $ sudo dmidecode -t memory # dmidecode 2.12 # SMBIOS entry point at 0xaaebef98 SMBIOS 2.7 present. Handle 0x0005, DMI type 5, 24 bytes Memory Controller Information Error Detecting Method: None Error Correcting Capabilities: None Supported Interleave: One-way Interleave Current Interleave: One-way Interleave Maximum Memory Module Size: 8192 MB Maximum Total Memory Size: 32768 MB Supported Speeds: Other Supported Memory Types: Other Memory Module Voltage: Unknown Associated Memory Slots: 4 0x0006 0x0007 0x0008 0x0009 Enabled Error Correcting Capabilities: None ...
To print information about the system, run this command.
tecmint@tecmint ~ $ sudo dmidecode -t system # dmidecode 2.12 # SMBIOS entry point at 0xaaebef98 SMBIOS 2.7 present. Handle 0x0001, DMI type 1, 27 bytes System Information Manufacturer: LENOVO Product Name: 20354 Version: Lenovo Z50-70 Serial Number: 1037407803441 UUID: 29D2B1E4-37D2-11E4-9F6E-28D244EBBD98 Wake-up Type: Power Switch SKU Number: LENOVO_MT_20354_BU_idea_FM_Lenovo Z50-70 Family: IDEAPAD ...
To print information about Linux BIOS, run this command.
tecmint@tecmint ~ $ sudo dmidecode -t bios # dmidecode 2.12 # SMBIOS entry point at 0xaaebef98 SMBIOS 2.7 present. Handle 0x0000, DMI type 0, 24 bytes BIOS Information Vendor: LENOVO Version: 9BCN26WW Release Date: 07/31/2014 Address: 0xE0000 Runtime Size: 128 kB ROM Size: 4096 kB Characteristics: PCI is supported BIOS is upgradeable BIOS shadowing is allowed Boot from CD is supported Selectable boot is supported EDD is supported Japanese floppy for NEC 9800 1.2 MB is supported (int 13h) Japanese floppy for Toshiba 1.2 MB is supported (int 13h) 5.25"/360 kB floppy services are supported (int 13h) 5.25"/1.2 MB floppy services are supported (int 13h) 3.5"/720 kB floppy services are supported (int 13h) 3.5"/2.88 MB floppy services are supported (int 13h) 8042 keyboard services are supported (int 9h) CGA/mono video services are supported (int 10h) ACPI is supported USB legacy is supported BIOS boot specification is supported Targeted content distribution is supported UEFI is supported BIOS Revision: 0.26 Firmware Revision: 0.26 ...
To print information about the Linux processor, run this command.
tecmint@tecmint ~ $ sudo dmidecode -t processor # dmidecode 2.12 # SMBIOS entry point at 0xaaebef98 SMBIOS 2.7 present. Handle 0x0004, DMI type 4, 42 bytes Processor Information Socket Designation: U3E1 Type: Central Processor Family: Core i5 Manufacturer: Intel(R) Corporation ID: 51 06 04 00 FF FB EB BF Signature: Type 0, Family 6, Model 69, Stepping 1 Flags: ...
Summary
There are many other ways you can use to obtain information about your Linux system hardware components. Most of these commands use files in the /proc directory to extract system information.
Hope you find these tips and tricks useful and remember to post a comment in case you want to add more information to this or if you face any difficulties in using any of the commands. Remember to always stay connected to Tecmint.
Being VERY new to Linux, I found your article the most useful piece of information I have found!!!
Is there a tool that can inventory serial ports and report on the supported features for each port? For example, does the port support any/all of the control lines or only transmit/receive? Does the port have specific speed limitations? etc.
Please can you advise me for utility or tools in RHEL equivalent to explorer tool (in oracle solaris) to collect whole information about system in order to analysis .
Can i use these commands to check server or other computers remotely??
@Manikandaprabu,
Yes, you can use these all commands on remote Linux server via a SSH.
How can we get kernel component related information in linux? What are the commands?
@Smita
Consult this guide: https://www.tecmint.com/find-linux-kernel-version-distribution-name-version-number/
You left out networking components
ifconfig -a
netstat -a
@Larry
Okay, thanks for mentioning.
Where do the html output goes to? I tried the lshw >html but I can’t find it anywhere. By the way, I was curious whether running lshw>txt would work, but it didn’t lol
@Moltke,
The html file created in your current working directory, for example if you run the following command from /home/username, the output of html will be created under /home/username, that you can check with ls command.
Thank you for your answer. Yes, after posting the question it occurred to me to check the capture again and there it was; /home/username on the search bar, so I went to my home folder and found it.
Felt a little bit like a fool and wanted to delete the comment but it is not possible to do so :)…thanks again for your answer. And nice article! I’m a big fan of this site, always come to check what’s new and always find some really useful articles like this one.
By the way, if I were to do some “benchmarks” on Linux systems, what is the best way to do so? Something else than top, htop or the likes.
I’m running some VMs under virtualbox and I’m curious if it is possible to do and how. I’d like to do that to compare them all cause I’m creating a wiki with all the tests I’ve done so far for personal use and who knows, maybe even upload it onto the web!!
@Moltke
You can use:
1. glances – a top-like monitoring tool with modern features compared to top
2. smem – reports memory consumption per-process and per-user basis in Linux
3. stress-ng – impose high CPU load and run stress test
4. And there are lot’s of other tools you can find here: 20 Command Line Tools to Monitor Linux Performance
These are obviously not the only tools, but i believe using a collection of various tools/utilities can help you come up with accurate and more reliable results. Thanks.
Thanks for your answer. I’ve used glances and it is quite useful. The other ones haven’t used them yet, but I will.
On Linux system where systemd is present, it’s possible to use some command line utilities to gather information about boot time, CPU usage and more, what can I use to do this in those ones where it is not?.
Also, the mesa-utils offer the capability to run tests on graphics performance. However, this is a lot of information to process and it is much time consuming, is there such a software/tool which I can use for gathering this information altogether?
I think probably not, but if you don’t mind I’d like to post the question, is there any? In the link you provided I see collectl, and it certainly looks like the perfect tool to accomplish what I want, or at least most of it, so I’ll try it and see what’s capable of. Thanks again for taking the time to answer. :)
You can also use smartctl to check your drives, hpasmcli/hpacucli for hp servers, and ipmitool sdr list to see information about your sensors, fans, etc.
How can i check hardware in other PCs in networks that has Linux on board? I have been using 3rd party GUI computer hardware inventory
from Softinventive Lab software but it`s too pricy. Any clues?
@Kerhep
I suppose you mean checking PC hardware info from a Linux machine, we have not come across any specific tools for that purpose, however, you can use network monitoring tools such as Nagios, Zabbix, Monitorix and many more. Although, they may not offer detailed hardware info from PCs.
You could use “ansible” which is great tool mainly used for automation, orchestration, which can also handy for running standalone commands, which can just use native ssh protocol to query end device and pull out complete hardware dump and show it.
This is again open source, however, there is an enterprise version called “ansible tower” for which u would need license. Ansible is belongs to Red Hat now.
@Mssm
Thanks for the clear, descriptive and above all useful feedback. I’ll surely try it out and hope every user who has faced the same issue as @Kerhap Gause will as well.