158 shares, 180 points


What if there was a command which might allow you to, in an easy-to-read format, view the entire {hardware} in your Linux system? Welcome to lshw, the good device typically ignored even by seasoned Linux professionals.

What Is lshw?

lshw, A utility, or higher device, put in by default whenever you set up Linux, gives you with an inventory of {hardware} as present in your system. One can bear in mind lshw by enthusiastic about ls (the command which helps you to record listing contents) and hw for {hardware}.

While the device has a great variety of formatting choices, provides detailed output for the gadgets it finds and may detect a stable variety of system sorts, even seasoned Linux professionals might not have heard of it. Perhaps different instruments have taken an excessive amount of of a entrance posting on search engines like google and related.

Currently, the device can detect DMI (x86 and IA-64), OpenFirmware system tree (PowerPC), PCI/AGP, CPUID (x86), IDE/ATA/ATAPI, PCMCIA, SCSI, and USB gadgets.

You may even set up a graphical model of the identical device utilizing a separate package deal, specifically lshw-gtk. While lshw doesn’t must be put in and is included by Linux by default in case you are taken with exploring your {hardware} in a GUI somewhat than on the command line (which this text will give attention to), set up lshw-gtk:

Installing lshw-gtk

To set up lshw-gtk in your Debian/Apt primarily based Linux distribution (Like Ubuntu and Mint), execute the next command in your terminal:

sudo apt set up lshw-gtk

To set up lshw-gtk in your RedHat/Yum primarily based Linux distribution (Like RHEL, Centos and Fedora), execute the next command in your terminal:

sudo yum set up lshw-gtk

If you find yourself putting in lshw-gtk, please notice that there are a number of oddities with this device that is probably not anticipated. For starters, it’s advocate that you just use sudo lshw-gtk at your terminal immediate to begin lshw-gtk as in any other case not all {hardware} data could also be obtainable.

Next, when you’ve gotten began the device, you’ll want to hit the Refresh button close to the highest as lshw-gtk doesn’t scan {hardware} by default, however solely on demand.

Finally, when your {hardware} is scanned a number of seconds later, the output appears to be lacking aside from a single Desktop Computer within the leftmost column. Double click on this, then double click on, for instance Motherboard within the second column, and so forth. In my very own expertise, I’ve discovered this specific GUI device to be, whereas working, a bit restricted.

Do you understand the distinction between a crash and error and an assert? Our Asserts, Errors, and Crashes article explains the distinction.

Exploring lshw on the Linux Terminal

When you execute lshw at your Linux Terminal (which may normally be began by urgent the Windows Key + T in your keyboard, or by urgent the working system’s primary icon (just like the inexperienced circle in Linux Mint) and typing terminal) you will notice an extended and verbose output of {hardware}. lshw did what it was instructed to do; record all {hardware}.

Let’s make this work a bit higher by limiting the output to what we’re taken with. Firstly we must always discover the {hardware} courses of output obtainable to us.

We can do that with lshw -short, which on the identical time will render a shorter, rather more readable overview of our {hardware}. Still, the output record will be 1-2 pages lengthy, relying in your terminal settings.

We also needs to at this level bear in mind to all the time use lshw with sudo. This will be certain that the output is not going to be incomplete or inaccurate. Running lshw as sudo needs to be secure (well-known final phrases!) as lshw is included by default within the Linux working system core distribution recordsdata; one would hope it has been completely evaluated.

sudo lshw -short | head -n6

lshw output in short format (using the -short option) also showing device classes, fist 6 lines of output

Here we requested a brief record of all {hardware} utilizing lshw -short, executed as the foundation superuser utilizing sudo, and restricted to the primary six strains of output utilizing head -n6. We piped the output from lshw to head through the use of a Linux pipe | which is a really helpful technique of post-parsing data rendered by a device into some nearly another format required.

Running this in VirtualField, we see an instantly attention-grabbing bit of knowledge: lshw is conscious that the system and bus is VirtualField primarily based. We additionally see that 8GiB of reminiscence was assigned to this VM (Virtual Machine).

Also importantly, we are able to see the Class of gadgets being listed, which is what we’ll use in our subsequent lshw instance. The system Class names utilized in lshw are simple and straightforward to recollect; there may be system, bus, reminiscence, bridge, generic, multimedia, disk, enter, quantity, show, community, processor and probably a number of others.

Using a Device Class to Query with lshw

Now that we all know the system Class names, allow us to use the identical together with the -class possibility (which will be abbreviated to -C) to question for less than particular gadgets which we’re taken with. For instance, what if we had a simple strategy to detect if the system we have been utilizing is a virtualized machine working beneath VirtualField particularly?

sudo lshw -short -C system
sudo lshw -short -C system 2>/dev/null | grep -o 'VirtualField'
if [ "$(sudo lshw -short -C system 2>/dev/null | grep -o 'VirtualBox')" == 'VirtualBox' ]; then echo 'We are utilizing VirtualField!'; else echo 'This is just not a VirtualField VM!'; fi

Using lshw to establish and test whether we are running inside VirtualBox

Here we executed a number of instructions, every time constructing the command into extra complexity. In the primary command we merely question lshw in the identical method as earlier than, although this time with the additional -C system choice to solely record gadgets from the system class.

After briefly scanning (not proven within the screenshot, because the output disappears as soon as the scanning is full), the system class gadgets are proven, which on this case is the VirtualField system.

In the subsequent command, we grep (choose) for less than (because of the -o possibility) the phrase ‘VirtualBox’. If the output doesn’t include ‘VirtualBox’, the command is not going to yield any output.

We additionally added and stderr (customary error output) redirection to /dev/null utilizing 2>/dev/null for the odd case the place sudo lshw would render an error. This is a generally used scripting method when piping data from one command to a different, although maybe right here there may be little risk of an error presenting itself (however not unattainable).

n the ultimate command, we insert this code right into a subshell ($(...)) after which into an if assertion. Basically, we’re asking the Bash interpreter to examine if the output of the second command matches ‘VirtualBox’.

If so, we are able to fairly confidently say We are utilizing VirtualField!. If you execute this code in your machine, assuming you might be utilizing Bash, as your command line interpreter/shell, and that you’re not utilizing VirtualField, the output needs to be This is just not a VirtualField VM! as an alternative.

Wrapping up

In this text, we explored lshw and lshw-gtk, the Linux instruments for acquiring detailed {hardware} and system data from the command line and from inside a GUI in your desktop. After exploring lshw system courses, we additionally checked out straight utilizing lshw data to ascertain whether or not we’re working inside VirtualField or not.

If you loved studying this text, you might prefer to learn How to Use strace to Trace System Calls and Signals subsequent!


Like it? Share with your friends!

158 shares, 180 points

What's Your Reaction?

confused confused
lol lol
hate hate
fail fail
fun fun
geeky geeky
love love
omg omg
win win