How To Get Linux Version

How To Get Linux Version

Reading time1 min
#Linux#Sysadmin#OpenSource#LinuxVersion#LinuxCommands#LinuxScripting

Mastering Linux Version Detection: The Definitive Guide for Sysadmins and Devs

Knowing exactly which Linux version you are working with is crucial for system compatibility, security patching, and optimized troubleshooting. It ensures that scripts, applications, and configurations are correctly tailored to the environment at hand.


Forget sloppy guesswork or generic commands—discover the most precise, foolproof methods to identify your Linux version across distributions and environments. This guide goes beyond basic commands to show you how to extract actionable version details that matter for real-world IT operations.


Why Knowing Your Linux Version Matters

Before diving into commands and methods, let’s talk about why exact Linux version detection is so important:

  • Compatibility: Different distros and versions may have varying package versions, kernel features, or default service behaviors.
  • Security: Ensuring security patches are appropriate to your version requires knowing exactly what you’re running.
  • Troubleshooting: Debugging issues often requires understanding the environment in fine detail.
  • Automation & Scripting: Conditional logic based on specific versions can prevent script failures.

Now that we understand the stakes, let’s master how to pinpoint your Linux version reliably.


Common vs. Precise: The Wrong Approach

Many beginners default to using:

cat /etc/issue

or

uname -a

While these can give a glimpse of the environment, they often lack detailed or standardized info across distributions.

Example flaw: uname -a mostly tells you about the kernel version, not the distribution or its release number.


Foolproof Methods to Detect Your Linux Version

1. The Universal Standard: /etc/os-release

Almost all modern distros ship with this file containing key-value pairs about their identity.

Run:

cat /etc/os-release

Sample output:

NAME="Ubuntu"
VERSION="22.04 LTS (Jammy Jellyfish)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 22.04 LTS"
VERSION_ID="22.04"
HOME_URL="https://ubuntu.com/"
...

Why it’s great:

  • Human-readable PRETTY_NAME
  • Machine-useful ID and VERSION_ID
  • Works consistently on modern systems including Debian, Ubuntu, Fedora, CentOS Stream, RHEL 8+, Arch variants

Script-friendly extraction e.g., Ubuntu version:

source /etc/os-release
echo "Running on $NAME version $VERSION_ID"

2. Legacy But Still Relevant: Distribution-specific Release Files

Older distros (or specialized ones) may not have /etc/os-release. For these check:

  • /etc/lsb-release
  • /etc/redhat-release
  • /etc/debian_version
  • /etc/SuSE-release

Example for Red Hat-based systems:

cat /etc/redhat-release

Outputs something like:

CentOS Linux release 7.9.2009 (Core)

If you hit multiple of these files on your system, prioritize “os-release” for modernity but fallback if not present.

3. lsb_release Command (Where Available)

If installed, lsb_release provides clean standard distro info:

lsb_release -a

Output example:

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

To just get the release number:

lsb_release -r -s   # outputs something like "22.04"

Not installed by default everywhere but easy to add via package managers (sudo apt install lsb-release).


Bonus: Detecting Kernel Version

Since some scripts need kernel info too — always use:

uname -r    # Prints kernel release version like "5.15.0-60-generic"
uname -m    # Machine hardware name (x86_64 ...)

Example combined command for logging system specifics:

echo "Distro: $(grep PRETTY_NAME /etc/os-release | cut -d= -f2 | tr -d '\"')"
echo "Kernel : $(uname -r)"
echo "Arch   : $(uname -m)"

Putting It All Together — Practical Script Example

Here’s a robust snippet that checks /etc/os-release, falls back gracefully if needed:

#!/bin/bash

# Try os-release first:
if [ -f /etc/os-release ]; then
    source /etc/os-release
    echo "Distribution : $NAME $VERSION_ID"
    echo "Codename     : ${VERSION_CODENAME:-N/A}"
elif [ -f /etc/lsb-release ]; then 
    # fallback using lsb-release file:
    . /etc/lsb-release 
    echo "Distribution : $DISTRIB_ID $DISTRIB_RELEASE ($DISTRIB_CODENAME)"
elif [ -f /etc/debian_version ]; then 
    echo "Debian-based system with version $(cat /etc/debian_version)"
elif [ -f /etc/redhat-release ]; then 
    echo "RedHat-based system:"
    cat /etc/redhat-release 
else 
    echo "Linux version detection failed — please check manually."
fi

echo "Kernel       : $(uname -r)"
echo "Architecture : $(uname -m)"

Save this as detect-linux.sh, make executable with chmod +x detect-linux.sh, and run it on any machine you manage.


Summary Cheat Sheet of Commands

TaskCommandNotes
Get distro & versioncat /etc/os-releaseMost reliable
LSB detailslsb_release -aSometimes requires install
Legacy RedHat releasecat /etc/redhat-releaseFor older CentOS/RHEL
Debian-specificcat /etc/debian_versionOlder Debian-based systems
Kernel infouname -rKernel release
Architectureuname -mHardware architecture

Final Thoughts

Mastering Linux version detection arms sysadmins and devs with clarity and precision—fundamental for writing bulletproof automation scripts, applying correct patches, or tailoring troubleshooting steps effectively.

Forget running simple guesswork commands—use this definitive guide’s reliable methods every time you log into a new server or container environment.

Happy sysadmin-ing!


If you found this guide helpful and want more practical Linux tips & tricks straight from real-world experience, subscribe to my blog!