2

Sometimes when I log on to a system via SSH (for example to the production server), I have such privileges that there can install some software, but to do that I need to know the system with which I am dealing.

I would be able to check how the system is installed there.

Is there a way from the CLI to determine what distribution of Unix/Linux is running?

5

Try:

uname -a

It will give you output such as:

Linux debianhost 3.16.0-4-686-pae #1 SMP Debian 3.16.36-1+deb8u2 (2016-10-19) i686 GNU/Linux

You can also use:

cat /etc/*release*
PRETTY_NAME="Debian GNU/Linux 8 (jessie)"
NAME="Debian GNU/Linux"
VERSION_ID="8"
VERSION="8 (jessie)"
ID=debian
HOME_URL="http://www.debian.org/"
SUPPORT_URL="http://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
  • In my case uname -a works, but cat /etc/*relase* it's not. – simhumileco Dec 16 '16 at 7:50
  • Ok. My bad, I thought that command would work across all distributions, I was apparently wrong! – maulinglawns Dec 16 '16 at 7:54
  • But it's good that you have entered it, because certainly in many cases it may be helpful... – simhumileco Dec 16 '16 at 7:56
2

To get the hostname, kernel version, and other useful information about the system:

uname -a

To get the version of the Linux distribution, there is not an unique command. Every distro implements it differently. On Debian and Ubuntu:

cat /etc/debian_version

On Red Hat:

cat /etc/redhat-release 
cat /etc/lsb-release
lsb_release -a

On Fedora:

cat /etc/fedora-release
1

For Linux you can try lsb_release command which provides Linux Standard Base and distro specific information. Try:

lsb_release -d

Also check for other options in man page

1

This has been answered a couple of times over on SuperUser with the usual tricks already mentioned here. But this answer has a novel method I quite like:

python -c "import platform; print platform.dist()"

Note this only works if Python 2.3 or later is available and is no longer available in Python 3.8.

  • 1
    Thank you for this great answer, but notice that it is deprecated since Python 3.5 and will be removed in Python 3.8. – simhumileco Jan 8 at 7:27
0

In a concise way you can do it like this (thanks to @daemontosh answer):

lsb_release -a

...show all the information.

Another concise way to get information is (thanks to @HeathRaftery and @JourneymanGeek answers):

cat /proc/version

but there are many Unixes that don't support the /proc pseudo-filesystem.

0

Indeed this problem can also be solved using Python and the platform module (thanks to @HeathRaftery):

Using platform() function:

python -c 'import platform; print platform.platform()'
# Linux-4.9.0-8-amd64-x86_64-with-debian-9.6

Returns a single string identifying the underlying platform with as much useful information as possible.

Or using uname() function:

python -c 'import platform; print platform.uname()'
# ('Linux', 'debian', '4.9.0-8-amd64', '#1 SMP Debian 4.9.130-2 (2018-10-27)', 'x86_64', '')

Fairly portable uname interface. Returns a namedtuple() containing six attributes: system, node, release, version, machine, and processor.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.