What linux distribution is installed

How to discover what Linux distribution is in use

Sometimes I need to access some servers running Linux (or maybe another Unix-like SO), but I don’t know how to verify which distribution is in use on the server (there are times that even the «responsible» person for the server doesn’t know). Is there an easy and reliable way to discover that, one that is uniform and consistent across all of them?

12 Answers 12

lsb_release -i may work for you.

More detail is available with lsb_release -a

lsb_release -d gave a much better result for me. -i gave «Distributor ID: CentOS». -d gave «Description: CentOS release 5.2 (Final)».

Most distributions put a release file in /etc/ (like /etc/redhat-release , /etc/gentoo-release , etc.) which usually has the version number of your distribution in it.

This is, annoyingly, a harder problem than it appears.

For Linux systems, use lsb_release.

$ lsb_release --all No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 8.04.1 Release: 8.04 Codename: hardy $ lsb_release -i Distributor ID: Ubuntu 

This has the limitation that lsb_release works only for Linux releases.

For all Unix systems, you can also parse up uname.

$ uname -a Linux blue-laptop 2.6.24-21-generic #1 SMP Tue Oct 21 23:43:45 UTC 2008 i686 GNU/Linux 

You can find some information about the systems and distributions at the uname Wikipedia page.

More narrowly, lsb_release only works on Linux systems which attempt to adhere to the Linux Standard Base specifications.

You should ask yourself if you really need to know which distro is in use (perhaps because you want to build a package specific for this distribution). In many other cases it is a far better idea, to just test and see if the features you need are there or not. This might look like a lot more work because you have to test every feature one by one but this way, your software becomes far more flexible.

Читайте также:  Vmware unix to linux

There are different commands you can use to check which distribution is in use. Here I am mentioning only 5 of them.

lsb_release provides distribution-specific information. Whereas -a display all information about the distribution. You can also use -d which only shows the description.

uname also provides system information. Whereas -a display all information. You can use man uname for other options.

You can also use cat command to print out all specific release information from etc folder. This command actually reads the lsb-release and os-release files from the /etc folder.

This command reads the issue file from the /etc folder.

This command reads the version file from the /proc folder. /proc folder contains information about system process.

Источник

5 Linux Commands to Check Distro Name and Version

When working with an unknown server, the first task of a sys admin is to gather some information about the system, like what OS is it running, what version, what services are running and so on.

And there is no single command that can detect distribution specific information consistently across all linux distributions.

The command is different across Debian, CentOS and ArchLinux.

So in this post we are listing out some common commands that are used to detect distro specific information on linux. This includes the distro name and version.

1. lsb_release

The lsb_release command prints out distribution specific information about a linux distro.

On Ubuntu/debian based systems the command is available by default.

$ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 11.04 Release: 11.04 Codename: natty

The lsb_release command is also available on CentOS/Fedora based systems, if the lsb core packages are installed.

# lsb_release -a LSB Version: :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch Distributor ID: CentOS Description: CentOS release 6.4 (Final) Release: 6.4 Codename: Final

2. /etc/*-release files

The /etc directory contains a couple of files that contains information about the distribution. The following files are present on Ubuntu/Debian based systems.

/etc/issue /etc/issue.net /etc/lsb-release /etc/os-release
$ cat /etc/issue Ubuntu 13.10 \n \l
$ cat /etc/issue.net Ubuntu 13.10
$ cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=13.10 DISTRIB_CODENAME=saucy DISTRIB_DESCRIPTION="Ubuntu 13.10"
$ cat /etc/os-release NAME="Ubuntu" VERSION="13.10, Saucy Salamander" ID=ubuntu ID_LIKE=debian PRETTY_NAME="Ubuntu 13.10" VERSION_ID="13.10" HOME_URL="http://www.ubuntu.com/" SUPPORT_URL="http://help.ubuntu.com/" BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"

The file os-release contains a whole lot of information about the system.

Читайте также:  Linux запуск драйверов nvidia

CentOS/Fedora based systems contain similar files but with different names.

/etc/centos-release /etc/lsb-release /etc/redhat-release /etc/system-release
# cat /etc/centos-release CentOS release 6.4 (Final)
# cat /etc/lsb-release LSB_VERSION=base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch
# cat /etc/redhat-release CentOS release 6.4 (Final)
# cat /etc/system-release CentOS release 6.4 (Final)

Note that the lsb specific command and files are not present on CentOS by default. The redhat-lsb-core packages have to be installed to make lsb available. The /etc/lsb-release file does not print the distro information in a simple format.

Fedora contains the /etc/os-release file, similar to ubuntu

$ cat /etc/os-release NAME=Fedora VERSION="18 (Spherical Cow)" ID=fedora VERSION_ID=18 PRETTY_NAME="Fedora 18 (Spherical Cow)" ANSI_COLOR="0;34" CPE_NAME="cpe:/o:fedoraproject:fedora:18"

3. cat /proc/version

The /proc/version file contains information about the kernel and some indication about the distro.

On a typical Ubuntu system the contents look like this

$ cat /proc/version Linux version 2.6.38-13-generic ([email protected]) (gcc version 4.5.2 (Ubuntu/Linaro 4.5.2-8ubuntu4) ) #52-Ubuntu SMP Tue Nov 8 16:53:51 UTC 2011

On a typical CentOS system the output looks as follows

# cat /proc/version Linux version 2.6.32-358.11.1.el6.x86_64 ([email protected]) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-3) (GCC) ) #1 SMP Wed Jun 12 03:34:52 UTC 2013

As can be seen above, the version information about the distro is not very clear, although it might be possible to deduce the distro in use.

Output on a RHEL 5 system

# cat /proc/version Linux version 2.6.18-028stab070.14 ([email protected]) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-46)) #1 SMP Thu Nov 18 16:04:02 MSK 2010

4. uname -a

The uname command can also indicate which linux distro is in use, but gives very little information about it.

On Ubuntu, uname can clearly indicate the distribution name.

$ uname -a Linux enlightened-desktop 2.6.38-13-generic #52-Ubuntu SMP Tue Nov 8 16:53:51 UTC 2011 x86_64 x86_64 x86_64 GNU/Linux

However on CentOS, the exact distro name is not revealed.

# uname -a Linux dhcppc3 2.6.32-358.11.1.el6.x86_64 #1 SMP Wed Jun 12 03:34:52 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

Instead it reports the base distro name EL (Redhat).

Читайте также:  Сниффер http запросов linux

Portable command

The following is an attempt to get a portable command for checking distro info across different linux systems.

$ cat /etc/[A-Za-z]*[_-][rv]e[lr]* squeeze/sid DISTRIB_ID=Ubuntu DISTRIB_RELEASE=11.04 DISTRIB_CODENAME=natty DISTRIB_DESCRIPTION="Ubuntu 11.04"

A simpler approach to make a portable command would be like this

$ lsb_release -a || cat /etc/redhat-release || cat /etc/*-release || cat /etc/issue

If one option fails, the command moves to the next one, until one of them works. The above command is not a well tested one and is expected to work fine only on ubuntu/debian and centos/fedora based systems.

That would print all unique lines from all /etc/*-release files. Works well on most distros.

A Tech Enthusiast, Blogger, Linux Fan and a Software Developer. Writes about Computer hardware, Linux and Open Source software and coding in Python, Php and Javascript. He can be reached at [email protected] .

One Comment

  1. Tony August 10, 2021 at 10:10 pm Hi, Nice article.
    I personaly use this command in one of my scripts: (lsb_release -a 2>/dev/null || cat /etc/redhat-release || cat /etc/*-release || cat /etc/issue) | grep -i “centos\|ubuntu\|red *hat\|fedora\|debian\|slackware\|suse\|arch\|deepin\|kubuntu\|alpine” -o | sort -f | uniq -i -u It’s not getting all the Distributions out there, but enough for my use. Cheers,
    Tony

Источник

Оцените статью
Adblock
detector