To check key Linux system information from the terminal: uname -a shows the kernel version and architecture, lsb_release -a or cat /etc/os-release shows the OS version, lscpu shows CPU details, free -h shows RAM usage, df -h shows disk space, ip addr shows network interfaces, and lshw or inxi -Fxz gives a comprehensive hardware overview. Most of these commands work on any Linux distribution without installing additional software.
Introduction: Knowing Your System
Knowing your Linux system’s details is not just satisfying curiosity — it is a practical necessity that comes up constantly. When you follow a tutorial, you need to know which distribution and version you are running. When you report a bug, developers ask for your kernel version. When troubleshooting performance issues, you check CPU load and memory usage. When planning storage, you check disk space. When configuring networking, you need interface names and IP addresses. When shopping for compatible hardware, you need to know what is already installed.
Linux provides an extraordinary array of commands for inspecting every aspect of the system — the operating system, kernel, CPU, memory, storage, network, graphics, and more. Unlike Windows, where system information is scattered across Device Manager, System Properties, and various control panels, Linux keeps most of this information in readable files under /proc, /sys, and /dev, with command-line tools that format and present it clearly.
This article covers the most useful system information commands organized by category: OS and kernel details, hardware inventory, CPU information, memory and swap, disk space and storage, network configuration, and comprehensive all-in-one tools. Each command is explained with its output so you know exactly what you are looking at.
OS and Distribution Information
The first questions about any Linux system: what distribution is it, and what version?
uname: Kernel and System Information
uname reports basic system information about the kernel and hardware:
$ uname -a
Linux mycomputer 6.8.0-51-generic #52-Ubuntu SMP PREEMPT_DYNAMIC Sat Nov 16 09:00:24 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
Breaking down the fields:
Linux— operating system namemycomputer— hostname6.8.0-51-generic— kernel release version#52-Ubuntu SMP PREEMPT_DYNAMIC...— kernel build version and compile datex86_64— machine hardware architecture (processor type)GNU/Linux— operating system type
Individual uname flags:
$ uname -s # Kernel name: Linux
$ uname -n # Network hostname: mycomputer
$ uname -r # Kernel release: 6.8.0-51-generic
$ uname -v # Kernel version (build info)
$ uname -m # Machine hardware: x86_64
$ uname -p # Processor type: x86_64
$ uname -o # OS: GNU/Linux
The most commonly needed flag is -r (kernel release version) — useful when checking if a kernel update requires a reboot or when verifying which kernel is running after an update.
lsb_release: Distribution Details
lsb_release (Linux Standard Base release) shows the distribution’s name, codename, and version:
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 24.04.1 LTS
Release: 24.04
Codename: noble
Individual flags:
$ lsb_release -d # Description only: Ubuntu 24.04.1 LTS
$ lsb_release -r # Release: 24.04
$ lsb_release -c # Codename: noble
lsb_release may not be installed on all distributions. Install it: sudo apt install lsb-release or sudo dnf install redhat-lsb-core.
/etc/os-release: Universal Distribution Information
Every modern Linux distribution includes /etc/os-release — a standardized file that always works regardless of which tools are installed:
$ cat /etc/os-release
PRETTY_NAME="Ubuntu 24.04.1 LTS"
NAME="Ubuntu"
VERSION_ID="24.04"
VERSION="24.04.1 LTS (Noble Numbat)"
VERSION_CODENAME=noble
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=noble
LOGO=ubuntu-logo
This is the most reliable way to check distribution information in scripts, because it is always present and in a consistent format. Extract a specific value:
$ . /etc/os-release && echo "$PRETTY_NAME"
Ubuntu 24.04.1 LTS
On Fedora:
$ cat /etc/os-release
NAME="Fedora Linux"
VERSION="40 (Workstation Edition)"
ID=fedora
VERSION_ID=40
PRETTY_NAME="Fedora Linux 40 (Workstation Edition)"
hostnamectl: System Identity
hostnamectl shows the system’s hostname and related information in a clean format:
$ hostnamectl
Static hostname: mycomputer
Icon name: computer-laptop
Chassis: laptop 💻
Machine ID: a1b2c3d4e5f6789012345678901234ab
Boot ID: f1e2d3c4b5a6987654321098765432ba
Operating System: Ubuntu 24.04.1 LTS
Kernel: Linux 6.8.0-51-generic
Architecture: x86-64
Hardware Vendor: Dell Inc.
Hardware Model: XPS 15 9500
Firmware Version: 1.23.0
This combines hostname, hardware vendor/model, OS version, kernel, and firmware in one view — useful for a quick system summary.
Kernel Information in Depth
Checking the Kernel Version
$ uname -r
6.8.0-51-generic
The kernel version string 6.8.0-51-generic means:
6— major version8— minor version0— patch level51— Ubuntu-specific packaging revisiongeneric— flavor (generic for standard desktop/server kernel; lowlatency, realtime, etc. for specialized variants)
Listing Installed Kernels
On Ubuntu, multiple kernel versions may be installed:
$ dpkg --list | grep linux-image
ii linux-image-6.8.0-49-generic amd64 Signed kernel image generic
ii linux-image-6.8.0-51-generic amd64 Signed kernel image generic
ii linux-image-generic amd64 Generic Linux kernel image
The running kernel is 6.8.0-51-generic (from uname -r). The older 6.8.0-49-generic remains available at the GRUB boot menu.
Loaded Kernel Modules
Kernel modules are drivers and extensions loaded into the running kernel:
$ lsmod
Module Size Used by
nvidia_uvm 1245184 0
nvidia_drm 65536 4
nvidia 8347648 96 nvidia_uvm,nvidia_drm
drm_kms_helper 282624 1 nvidia_drm
i2c_nvidia_gpu 16384 0
[many more...]
Find information about a specific module:
$ modinfo nvidia
filename: /lib/modules/6.8.0-51-generic/updates/dkms/nvidia.ko
description: NVIDIA Uniform Architecture Driver
author: NVIDIA Corporation
version: 550.120
Hardware Overview
lshw: Comprehensive Hardware List
lshw (list hardware) provides a detailed inventory of all hardware. It requires root for complete information:
$ sudo lshw
mycomputer
description: Notebook
product: XPS 15 9500
vendor: Dell Inc.
version: 0.1
serial: ABCDE12
width: 64 bits
capabilities: smp vsyscall32
*-core
description: Motherboard
product: 0C5D0Y
*-cpu
description: CPU
product: Intel(R) Core(TM) i7-10750H CPU @ 2.60GHz
width: 64 bits
*-memory
description: System Memory
size: 32GiB
*-pci
*-display
description: VGA compatible controller
product: NVIDIA Corporation TU117M [GeForce GTX 1650 Ti]
More readable short format:
$ sudo lshw -short
H/W path Device Class Description
=======================================================
system XPS 15 9500
/0 bus 0C5D0Y
/0/0 memory 64KiB BIOS
/0/2d memory 32GiB System Memory
/0/2d/0 memory 16GiB Row Of Chips LPDDR4X
/0/2d/1 memory 16GiB Row Of Chips LPDDR4X
/0/100/2 display UHD Graphics
/0/100/1c.0/0 display GeForce GTX 1650 Ti
/0/100/1f.3 multimedia Comet Lake PCH cAudio
/0/1 /dev/sda disk 512GB NVMe SSD
/0/2 /dev/sdb disk 1TB Crucial MX500
HTML output for detailed report:
$ sudo lshw -html > system_report.html
inxi: The User-Friendly System Information Tool
inxi is a feature-rich system information script that produces clean, readable output. Install it if not present:
$ sudo apt install inxi # Ubuntu/Debian
$ sudo dnf install inxi # Fedora
Full system information:
$ inxi -Fxz
System:
Host: mycomputer Kernel: 6.8.0-51-generic arch: x86_64 bits: 64
Desktop: GNOME v: 46.0 Distro: Ubuntu 24.04.1 LTS
Machine:
Type: Laptop System: Dell product: XPS 15 9500
Mobo: Dell model: 0C5D0Y serial: <filter>
UEFI: Dell v: 1.23.0 date: 11/15/2024
CPU:
Info: 6-core model: Intel Core i7-10750H bits: 64 type: MT MCP
Speed (MHz): avg: 2600 min/max: 800/5000
Graphics:
Device-1: Intel UHD Graphics driver: i915
Device-2: NVIDIA GeForce GTX 1650 Ti driver: nvidia v: 550.120
Display: wayland server: X.org v: 1.21.1.11 with: Xwayland
renderer: Mesa Intel UHD Graphics (CML GT2) v: 4.6
Memory:
RAM: total: 31.09 GiB used: 8.42 GiB (27.1%)
Array-1: capacity: 64 GiB
Device-1: ChannelA-DIMM0 type: LPDDR4X size: 16 GiB speed: 4267 MT/s
Device-2: ChannelB-DIMM0 type: LPDDR4X size: 16 GiB speed: 4267 MT/s
Drives:
Local Storage: total: 1.36 TiB used: 234.5 GiB (16.8%)
ID-1: /dev/nvme0n1 vendor: Samsung model: MZVLB512HBJQ size: 476.94 GiB
ID-2: /dev/sda vendor: Crucial model: CT1000MX500SSD1 size: 931.51 GiB
Network:
Device-1: Intel Wi-Fi 6 AX201 driver: iwlwifi
The -z flag anonymizes serial numbers and MAC addresses — useful when sharing output publicly. inxi is one of the most useful single commands for a complete system overview.
CPU Information
lscpu: CPU Architecture and Details
$ lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Address sizes: 39 bits physical, 48 bits virtual
Byte Order: Little Endian
CPU(s): 12
On-line CPU(s) list: 0-11
Vendor ID: GenuineIntel
Model name: Intel(R) Core(TM) i7-10750H CPU @ 2.60GHz
CPU family: 6
Model: 165
Thread(s) per core: 2
Core(s) per socket: 6
Socket(s): 1
Stepping: 2
CPU max MHz: 5000.0000
CPU min MHz: 800.0000
BogoMIPS: 5199.98
Virtualization: VT-x
Caches (sum of all):
L1d: 192 KiB (6 instances)
L1i: 192 KiB (6 instances)
L2: 1.5 MiB (6 instances)
L3: 12 MiB (1 instance)
Key information from lscpu:
- CPU(s): 12 — total logical CPUs (6 cores × 2 threads with hyperthreading)
- Thread(s) per core: 2 — hyperthreading is enabled
- Core(s) per socket: 6 — physical cores
- CPU max MHz: 5000 — maximum boost frequency (5 GHz)
- Virtualization: VT-x — Intel virtualization extensions available
/proc/cpuinfo: Raw CPU Data
$ cat /proc/cpuinfo | grep "model name" | head -1
model name : Intel(R) Core(TM) i7-10750H CPU @ 2.60GHz
$ cat /proc/cpuinfo | grep "cpu cores" | head -1
cpu cores : 6
$ grep -c "processor" /proc/cpuinfo
12
/proc/cpuinfo contains one entry per logical CPU. grep -c "processor" counts the total number of logical processors.
Checking CPU Temperature
$ sudo apt install lm-sensors
$ sudo sensors-detect # One-time detection (press Enter for defaults)
$ sensors
coretemp-isa-0000
Adapter: ISA adapter
Package id 0: +52.0°C (high = +100.0°C, crit = +100.0°C)
Core 0: +48.0°C (high = +100.0°C, crit = +100.0°C)
Core 1: +49.0°C (high = +100.0°C, crit = +100.0°C)
Core 2: +52.0°C (high = +100.0°C, crit = +100.0°C)
Core 3: +48.0°C (high = +100.0°C, crit = +100.0°C)
Core 4: +50.0°C (high = +100.0°C, crit = +100.0°C)
Core 5: +51.0°C (high = +100.0°C, crit = +100.0°C)
Memory and Swap Information
free: RAM and Swap Usage
$ free -h
total used free shared buff/cache available
Mem: 31Gi 8.3Gi 1.2Gi 512Mi 21Gi 22Gi
Swap: 2.0Gi 0B 2.0Gi
Understanding the columns:
- total — total physical RAM (31 GB)
- used — RAM currently in use by processes (8.3 GB)
- free — RAM that is completely unused (1.2 GB — this looks low but is misleading)
- shared — RAM used by shared memory (tmpfs, etc.)
- buff/cache — RAM used by kernel buffers and page cache (21 GB — this is memory holding cached file data, immediately available to applications if needed)
- available — the real measure of available memory: free + releasable buff/cache (22 GB — plenty of RAM available)
The available column is the important one. Linux uses idle RAM as disk cache to speed up file access — this cached memory is not truly “used” because the kernel will release it instantly when an application needs memory.
Display in different units:
$ free -m # In megabytes
$ free -g # In gigabytes
$ free -b # In bytes
Show continuously updated memory usage:
$ free -h -s 2 # Update every 2 seconds
/proc/meminfo: Detailed Memory Information
$ cat /proc/meminfo
MemTotal: 32505856 kB
MemFree: 1258496 kB
MemAvailable: 23068672 kB
Buffers: 524288 kB
Cached: 19922944 kB
SwapCached: 0 kB
SwapTotal: 2097152 kB
SwapFree: 2097152 kB
HugePages_Total: 0
HugePages_Free: 0
HugepageSize: 2048 kB
vmstat: Virtual Memory Statistics
$ vmstat -s -S M
31744 M total memory
8524 M used memory
8213 M active memory
19832 M inactive memory
1230 M free memory
512 M buffer memory
21478 M swap cache
2048 M total swap
0 M used swap
2048 M free swap
vmstat is particularly useful for monitoring memory behavior over time:
$ vmstat 2 5 # Report every 2 seconds, 5 times
Disk and Storage Information
df: Disk Space Usage
$ df -h
Filesystem Size Used Avail Use% Mounted on
tmpfs 3.2G 2.3M 3.2G 1% /run
/dev/nvme0n1p2 469G 225G 220G 51% /
tmpfs 16G 255M 16G 2% /dev/shm
tmpfs 5.0M 8.0K 5.0M 1% /run/lock
/dev/nvme0n1p1 1.1G 11M 1.1G 1% /boot/efi
/dev/sda1 916G 50G 820G 6% /mnt/storage
Column meanings:
- Filesystem — the device or filesystem name
- Size — total capacity
- Used — space currently occupied
- Avail — space available for use
- Use% — percentage used
- Mounted on — where in the filesystem tree this is accessible
Show only physical filesystems (exclude tmpfs and other virtual):
$ df -h --exclude-type=tmpfs --exclude-type=devtmpfs
Show inode usage (for when you run out of inodes before disk space):
$ df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/nvme0n1p2 30539776 1234567 29305209 4% /
lsblk: Block Device Tree
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
nvme0n1 259:0 0 477G 0 disk
├─nvme0n1p1 259:1 0 1.1G 0 part /boot/efi
├─nvme0n1p2 259:2 0 470.9G 0 part /
└─nvme0n1p3 259:3 0 5G 0 part [SWAP]
sda 8:0 0 931.5G 0 disk
└─sda1 8:1 0 931.5G 0 part /mnt/storage
lsblk shows the hierarchy of block devices — physical drives, their partitions, and where each is mounted. This is the clearest view of your storage layout.
With filesystem information:
$ lsblk -f
NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINTS
nvme0n1
├─nvme0n1p1 vfat FAT32 A1B2-C3D4 1.1G 1% /boot/efi
├─nvme0n1p2 ext4 1.0 a1b2c3d4-e5f6-7890-abcd-ef1234567890 220G 51% /
└─nvme0n1p3 swap 1 b2c3d4e5-f6a7-8901-bcde-f01234567891 [SWAP]
fdisk and parted: Partition Details
$ sudo fdisk -l /dev/nvme0n1
Disk /dev/nvme0n1: 476.94 GiB, 512110190592 bytes, 1000215216 sectors
Disk model: Samsung MZVLB512HBJQ-000L2
Units: sectors of 1 * 512 = 512 bytes
Disk identifier: A1B2C3D4-E5F6-7890-ABCD-EF1234567890
Device Start End Sectors Size Type
/dev/nvme0n1p1 2048 2203647 2201600 1.1G EFI System
/dev/nvme0n1p2 2203648 989855743 987652096 470.9G Linux filesystem
/dev/nvme0n1p3 989855744 999999487 10143744 4.8G Linux swap
nvme and hdparm: Drive Health
Check NVMe SSD health:
$ sudo nvme smart-log /dev/nvme0n1
SMART/Health Information (NVMe Log 0x02)
Critical Warning: 0x00
Temperature: 35°C
Available Spare: 100%
Available Spare Threshold: 10%
Percentage Used: 1%
Data Units Read: 4,234,567 [2.17 TB]
Data Units Written: 2,123,456 [1.09 TB]
Power On Hours: 1234
Install nvme-cli: sudo apt install nvme-cli
Network Information
ip addr: Network Interfaces and Addresses
$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
2: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP
link/ether a4:c3:f0:12:34:56 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.105/24 brd 192.168.1.255 scope global dynamic
inet6 fe80::a6c3:f0ff:fe12:3456/64 scope link
3: wlp4s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
link/ether bc:d0:74:78:9a:bc brd ff:ff:ff:ff:ff:ff
inet 192.168.1.110/24 brd 192.168.1.255 scope global dynamic
Short form:
$ ip -br addr
lo UNKNOWN 127.0.0.1/8 ::1/128
enp3s0 UP 192.168.1.105/24 fe80::a6c3:f0ff:fe12:3456/64
wlp4s0 UP 192.168.1.110/24
Checking the Public IP Address
$ curl -s ifconfig.me
203.0.113.42
$ curl -s icanhazip.com
203.0.113.42
These services return your public IP as seen from the internet — useful for verifying VPN connections or checking external connectivity.
Network Interfaces
$ ip link show
$ nmcli device status # NetworkManager device status
DEVICE TYPE STATE CONNECTION
enp3s0 ethernet connected Wired connection 1
wlp4s0 wifi connected HomeNetwork
lo loopback unmanaged --
DNS Configuration
$ cat /etc/resolv.conf
nameserver 127.0.0.53
options edns0 trust-ad
$ resolvectl status # systemd-resolved DNS details
Global
Protocols: -LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
resolv.conf mode: stub
Current DNS Server: 192.168.1.1
DNS Servers: 192.168.1.1 8.8.8.8
GPU and Display Information
lspci: PCI Device List (Includes GPU)
$ lspci | grep -i vga
00:02.0 VGA compatible controller: Intel Corporation UHD Graphics (rev 05)
01:00.0 VGA compatible controller: NVIDIA Corporation TU117M [GeForce GTX 1650 Ti] (rev a1)
$ lspci -v -s 01:00.0 # Detailed info for the NVIDIA GPU
glxinfo: OpenGL/GPU Details
$ sudo apt install mesa-utils
$ glxinfo | grep -i "opengl\|vendor\|renderer"
OpenGL vendor string: NVIDIA Corporation
OpenGL renderer string: NVIDIA GeForce GTX 1650 Ti/PCIe/SSE2
OpenGL version string: 4.6.0 NVIDIA 550.120
nvidia-smi: NVIDIA GPU Status
$ nvidia-smi
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 550.120 Driver Version: 550.120 CUDA Version: 12.4 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC|
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M.|
|=============================================================================|
| 0 GeForce GTX 1650 Ti Off | 00000000:01:00.0 Off| N/A|
| N/A 45C P8 3W / 80W | 456MiB / 4096MiB | 0% Default |
+-----------------------------------------------------------------------------+
System Uptime and Load
uptime: How Long the System Has Been Running
$ uptime
10:35:42 up 5 days, 2:18, 2 users, load average: 0.52, 0.48, 0.45
- 10:35:42 — current time
- up 5 days, 2:18 — system has been running for 5 days and 2 hours 18 minutes
- 2 users — two users currently logged in
- load average: 0.52, 0.48, 0.45 — average number of processes waiting to run over the last 1, 5, and 15 minutes
Interpreting load average: On a system with 12 CPUs (like the example above), a load average of 1.0 means all CPUs are at about 8% utilization. A load average of 12.0 means the CPUs are fully utilized. A load average consistently above the CPU count indicates the system is overloaded.
$ uptime -p # Pretty format
up 5 days, 2 hours, 18 minutes
who and w: Who Is Logged In
$ who
sarah pts/0 2026-02-18 09:22 (192.168.1.100)
root pts/1 2026-02-18 09:30 (192.168.1.105)
$ w
10:35:42 up 5 days, 2:18, 2 users, load average: 0.52, 0.48, 0.45
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
sarah pts/0 192.168.1.100 09:22 0.00s 0.25s 0.03s bash
root pts/1 192.168.1.105 09:30 5.00s 0.05s 0.01s w
last: Login History
$ last | head -10
sarah pts/0 192.168.1.100 Wed Feb 18 09:22 still logged in
root pts/1 192.168.1.105 Wed Feb 18 09:30 still logged in
sarah pts/0 192.168.1.100 Tue Feb 17 08:15 - 18:45 (10:30)
System Resource Monitoring
top: Real-Time Process and Resource Monitor
$ top
The top display updates every few seconds showing:
- System uptime and load averages (top line)
- Task counts (running, sleeping, stopped)
- CPU usage breakdown (user, system, idle)
- Memory usage
- Per-process list sorted by CPU usage
Key top keyboard commands:
q— quitM— sort by memory usageP— sort by CPU usage (default)k— kill a process (enter PID when prompted)1— toggle per-CPU display
htop: Enhanced Interactive Monitor
htop is a more visual, user-friendly alternative:
$ sudo apt install htop
$ htop
htop adds color-coded CPU bars, memory usage bars, mouse support, and easier process management compared to top.
BIOS and Firmware Information
dmidecode: Hardware and BIOS Details
dmidecode reads hardware information from DMI/SMBIOS tables — the same data your BIOS/UEFI provides:
$ sudo dmidecode -t bios
# dmidecode 3.4
Getting SMBIOS data from sysfs.
SMBIOS 3.1.1 present.
Handle 0x0000, DMI type 0, 26 bytes
BIOS Information
Vendor: Dell Inc.
Version: 1.23.0
Release Date: 11/15/2024
ROM Size: 32 MB
Characteristics:
PCI is supported
PCI Express is supported
UEFI is supported
$ sudo dmidecode -t memory | grep -A10 "Memory Device"
Memory Device
Array Handle: 0x003A
Size: 16384 MB
Form Factor: Row Of Chips
Type: LPDDR4X
Speed: 4267 MT/s
Manufacturer: Samsung
Part Number: K4EBE304EB-EGCG
$ sudo dmidecode -t processor | grep "Max Speed"
Max Speed: 5000 MHz
Available DMI types: bios, system, baseboard, chassis, processor, memory, cache, connector, slot
Complete System Information Quick Reference
| Information | Command |
|---|---|
| OS name and version | lsb_release -a or cat /etc/os-release |
| Kernel version | uname -r |
| Full kernel info | uname -a |
| System summary | hostnamectl |
| CPU details | lscpu |
| CPU model only | grep "model name" /proc/cpuinfo | head -1 |
| CPU temperature | sensors (after sensors-detect) |
| RAM usage | free -h |
| RAM details | cat /proc/meminfo |
| Disk space | df -h |
| Storage layout | lsblk |
| Partition details | sudo fdisk -l |
| Network interfaces | ip -br addr |
| All hardware (brief) | sudo lshw -short |
| All hardware (pretty) | inxi -Fxz |
| GPU info | lspci | grep -i vga |
| BIOS/firmware | sudo dmidecode -t bios |
| RAM hardware info | sudo dmidecode -t memory |
| Uptime and load | uptime |
| Who is logged in | w |
| Real-time resources | top or htop |
| Kernel modules | lsmod |
Conclusion: Knowing Your System Is Knowing Linux
The ability to quickly interrogate your Linux system — to answer questions about its hardware, its OS version, its resource usage, and its configuration — is a foundational skill that pays dividends in every aspect of Linux use. Troubleshooting becomes faster when you know how to check CPU temperature and memory pressure. Following tutorials becomes easier when you can instantly confirm your kernel version and distribution. Planning upgrades becomes more informed when you know exactly what hardware you have.
The commands in this article cover the most common system information needs: uname -r and cat /etc/os-release for OS and kernel, lscpu for CPU, free -h for memory, df -h and lsblk for storage, ip addr for networking, and inxi -Fxz or sudo lshw -short for a complete hardware overview. These commands are fast, available on virtually every Linux system, and provide clear, actionable information.
Build the habit of checking these commands when you encounter a new system, when troubleshooting performance issues, or when you need to verify that a change has taken effect. The information they reveal is always exactly one command away.




