Command To Find Linux Version

Command To Find Linux Version

Reading time1 min
#Linux#CommandLine#OpenSource#LinuxVersion#SysAdmin#LinuxCommands

Mastering the Command Line: How to Accurately Identify Your Linux Version

Critical tasks—like deploying software, patching vulnerabilities, or debugging system errors—often hinge on knowing your exact Linux distribution and release. Too many engineers have installed incompatible packages or referenced the wrong kernel documentation, leading to broken systems or wasted time. Get it right from the start.


Direct Inspection: /etc/os-release

Start where modern distros (systemd-based since ~2013) document their identity:

cat /etc/os-release

Sample output:

NAME="Ubuntu"
VERSION="22.04.4 LTS (Jammy Jellyfish)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 22.04.4 LTS"
VERSION_ID="22.04"
  • ID_LIKE is sometimes unexpectedly critical for tool compatibility.
  • Not present on legacy distributions; see below.

The lsb_release Utility

If lsb-release is present, it gives a concise summary. In scripted environments, prefer this for cleaner parsing:

lsb_release -a

Typical output:

Distributor ID: Ubuntu
Description:    Ubuntu 22.04.4 LTS
Release:        22.04
Codename:       jammy

If unavailable:

bash: lsb_release: command not found

Install with:

  • sudo apt install lsb-release (Debian/Ubuntu)
  • sudo yum install redhat-lsb-core (RHEL/CentOS)

Note: Installing this package often pulls in multiple LSB dependencies; be aware on minimal or air-gapped systems.


Kernel, Not Distribution: uname

Avoid this trap. uname -r shows your kernel version, which is not a proxy for distribution details:

uname -r

Output:

5.15.0-105-generic

A system might be Ubuntu 22.04 or Debian 12 with the same kernel string. Always pair this with distribution checks if troubleshooting modules or system calls.


Legacy and Distro-Specific Files

On older or stripped-down systems, /etc/os-release may not exist. Distribution maintainers follow old conventions:

DistributionFileExample Command
Debian/Ubuntu/etc/lsb-releasecat /etc/lsb-release
Debian/etc/debian_versioncat /etc/debian_version
RHEL/CentOS/etc/redhat-releasecat /etc/redhat-release
CentOS/etc/centos-releasecat /etc/centos-release

Typical /etc/redhat-release:

Red Hat Enterprise Linux release 8.9 (Ootpa)

Gotcha: Sometimes these files are symbolic links—inspect with ls -l for unusual paths or container environments.


Consolidated Version Detection

Automate environment scans with this fallback script. Useful when wrapping automation jobs or building configuration management facts.

#!/bin/bash
if [ -f /etc/os-release ]; then
    cat /etc/os-release
elif command -v lsb_release &> /dev/null; then
    lsb_release -a
elif [ -f /etc/lsb-release ]; then
    cat /etc/lsb-release
elif [ -f /etc/debian_version ]; then
    echo "Debian Version:"
    cat /etc/debian_version
elif [ -f /etc/redhat-release ]; then
    cat /etc/redhat-release
else
    echo "No standard Linux version markers found."
fi

Usage:

chmod +x check_linux_version.sh
./check_linux_version.sh

Side effect: The script does not handle container distros like Alpine or custom minimal builds—add /etc/alpine-release or similar checks as required.


Non-Obvious Tips

  • Docker containers: FROM lines may use scratch or Alpine—sometimes /etc/os-release is absent entirely.
  • Cloud images: Images from cloud vendors (AWS, Azure) may modify these files for branding; validate the PRETTY_NAME string carefully before automation.
  • WSL (Windows Subsystem for Linux): Distribution files sometimes report upstream versions while subtle differences remain (e.g., kernel compiled by Microsoft).

In Practice

Sysadmins running mixed environments (for example, RHEL 8.6 alongside Ubuntu 20.04 and Debian 11) should validate scripts across nodes—default location conventions break in custom or container deployments. And when submitting bug reports upstream or to a vendor, always copy the precise cat /etc/os-release output for clarity.


If a system reports a version you don’t expect—or files are missing—consider whether the image is incomplete, a container, or a snap/flatpak application runtime, not a full OS root filesystem.


Summary Table

CommandInformation ProvidedWorks On
cat /etc/os-releaseFull distro & versionMost modern distros
lsb_release -aShort, script-friendlyIf installed
uname -rKernel version onlyAll Linux systems
/etc/*-release filesLegacy/manual checkOlder or minimal builds

Note: There are alternate heuristics—such as parsing dmesg boot logs for clues—but direct file inspection remains fastest and least ambiguous in 99% of operational scenarios.

For edge-cases or custom minimal builds, review what is present rather than what "should" be; Linux conventions are best-effort, not statute.