138

How do I determine the version of a CentOS server without access to any graphical interface? I've tried several commands:

# cat /proc/version Linux version 2.6.18-128.el5 ([email protected]) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-44)) … # cat /etc/issue Red Hat Enterprise Linux Server release 5.3 (Tikanga) 

but which one is correct: 4.1.2-4 from /proc/version or 5.3 from /etc/issue?

1
  • cat /etc/system-release Commented Apr 10 at 11:18

10 Answers 10

182

In cases like CentOS the actual version is usually placed in /etc/*elease.

cat /etc/*elease 

granted this file usually holds the version of the entire OS minus the kernel (since you can choose which to load). This file will have the same information as /etc/issue but with CentOS instead of RedHat

6
  • 1
    cat /etc/*release will work too, and you are not omitting a letter of what are you looking for ;) because elease is not always easy to guess. * can be nothing, all, one or more items at time. Thank you, i always forgot the way to get the release version. Commented May 22, 2015 at 17:11
  • 9
    The reason I leave the "R" off is because in some cases the "R" in "release" is capitalized. Commented Jun 1, 2015 at 19:08
  • Just to say, doing ls /etc/*elease on my system gives /etc/centos-release /etc/redhat-release /etc/system-release. So I'm guessing from all this that the release files tend to be in /etc/*-release - but possibly with some capitalisation. Commented Aug 7, 2015 at 12:35
  • 2
    This is correct. I find at many sites that /etc/issue has been overwritten with an MOTD or security disclaimer for use with the Banner option in sshd_config Commented Oct 6, 2015 at 14:20
  • cat /etc/*os-release should yield more targetted results for CentOS and still work on Ubuntu and others. Commented Apr 15, 2019 at 19:59
43

As you can see in /etc/issue, you're using CentOS 5.3. (It says Red Hat because CentOS is based upon the RH sources, and some software checks /etc/issue to identify the distro in use; thus, they'd fail if this was changed to CentOS).

The 4.1.2-4 in /proc/version refers to the version of the gcc C compiler used to build the kernel.

5
  • 3
    I'll just add, what You could use uname -a to detect, if it 32 or 64 bit compatible. Commented May 31, 2013 at 9:46
  • 18
    On CentOS 7, 'cat /etc/issue' yields gobbledygook: \S Kernel \r on an \m Commented Jul 8, 2015 at 16:09
  • 11
    Correct answer should be the one by h3rrmiller... cat /etc/*elease. /etc/issue is often replaced by an organisation's MOTD/disclaimer Commented Oct 7, 2015 at 12:52
  • The /etc/issue file shows that it is RHEL, not CentOS. Commented Jun 18, 2019 at 20:03
  • crappy answer. I dont know why is it accepted Commented Aug 25, 2020 at 18:19
20

The most reliable way of finding MAJOR version of CentOS (5 or 6 etc) is:

# rpm -q --queryformat '%{VERSION}' centos-release 6 

For RHEL do this:

# rpm -q --queryformat '%{RELEASE}' redhat-release-server | awk -F. '{print $1}' 7 

The only portable way of finding out a version without lsb_release or other tools is:

# grep -oE '[0-9]+\.[0-9]+' /etc/redhat-release 6.5 
5
  • 3
    Can be simplified to: cat /etc/redhat-release | grep -o '[0-9]\.[0-9]' Commented Jul 31, 2015 at 23:22
  • 1
    +1 rpm -q centos-release is the only way I have yet found to get the minor version on older CentOS5 releases where /etc/redhat-release only contains the major version. Thanks for the hint. Commented Nov 19, 2015 at 6:54
  • 1
    To get the major version: cat /etc/redhat-release | grep -oP '(?<= )[0-9]+(?=\.)' Commented Feb 8, 2017 at 7:16
  • 1
    Just curious: why "cat file | grep pattern" instead of "grep pattern file"? Commented Jun 17, 2017 at 15:36
  • Right, digged that from shell history and was able to correct this. Fixed. Commented Jul 3, 2017 at 6:48
14

You can determine it by just calling the following command:

hostnamectl 

Which will return as the following:

Static hostname: mgbcctli01 Icon name: computer-vm Chassis: vm Machine ID: de14d80a0900427894dbcf6137e058e7 Boot ID: 6865f9839c064bc9be32281d0f262cc8 Virtualization: vmware Operating System: CentOS Linux 7 (Core) CPE OS Name: cpe:/o:centos:centos:7 Kernel: Linux 3.10.0-514.2.2.el7.x86_64 Architecture: x86-64 

You can also use rpm to find details about CentOS version:

rpm --query centos-release 

Which will return in my case:

centos-release-7-3.1611.el7.centos.x86_64 
2
  • 1
    hostnamectl only returns the major release number Commented Jan 24, 2017 at 11:48
  • 1
    That's right, using rpm, you can get a detailed version Commented Jan 24, 2017 at 11:49
6

Correct way is lsb_release -d.

4
  • 9
    On CentOS 7: lsb_release: Command not found. Commented Feb 17, 2016 at 0:42
  • yum install redhat-lsb-core ... Commented Feb 17, 2016 at 17:13
  • 8
    Sure, but I meant: I'm not sure is valuable to have to install a new package to get the current version. Commented Feb 17, 2016 at 19:07
  • 1
    If you want some command which is able to do so across multiple distributions it may still be worth installing. Commented Feb 18, 2016 at 9:49
6

The most truly reliable (and short) way to get MAJOR version of either CentOS or RHEL is:

rpm -E %{rhel} 

Will give you a value of e.g. 6, 7, or 8 (now that RHEL 8 is out).

5
# echo "I am running: `cat /etc/redhat-release` (`arch`)" 

Outputs the following:

I am running: CentOS release 6.7 (Final) (x86_64) 
3

It can be found at the location /etc, inside the file os-release. So type in:

cat /etc/os-release 
2
  • Was this backported to CentOS 5 or 6? If not, this is mostly useful going forward.... Commented Aug 17, 2017 at 23:52
  • CentOS made this available starting with CentOS 7 - I've not seen a backport. Commented Apr 15, 2019 at 19:54
2

Run rpm --eval '%{centos_ver}' to get MAJOR version of centos.

0

Here is some command I collected through google, may help someone:

https://forum.directadmin.com/showthread.php?t=15878

cat /etc/*release* cat /etc/centos-release 

http://www.liquidweb.com/kb/how-to-check-your-centos-version/

cat /etc/redhat-release 

https://linuxconfig.org/how-to-check-centos-version

# the later two may need some package to install rpm --query centos-release hostnamectl lsb_release -d 

I created a gist to record this, too.

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.