it-swarm.dev

Como faço para descobrir qual versão do Linux estou executando?

Existe uma maneira de determinar qual versão (distribuição e versão do kernel, suponho) do Linux está sendo executada (a partir da linha de comando), que funciona em qualquer sistema Linux?

204
Daryl Spitzer

O kernel é detectado universalmente com uname:

$ uname -or
2.6.18-128.el5 GNU/Linux

Não existe realmente uma forma de distribuição cruzada para determinar em qual distribuição e versão você está. Houve tentativas de tornar isso consistente, mas no final varia, infelizmente. As ferramentas LSB fornecem essas informações, mas ironicamente não são instaladas por padrão em todos os lugares. Exemplo em um sistema Ubuntu 9.04 com o pacote lsb-release instalado:

$ lsb_release -irc
Distributor ID: Ubuntu
Release:        9.04
Codename:       jaunty

Caso contrário, o método amplamente disponível mais próximo está verificando os arquivos /etc/something-release. Eles existem na maioria das plataformas comuns e em seus derivados (ou seja, Red Hat e CentOS).

Aqui estão alguns exemplos.

O Ubuntu tem /etc/lsb-release:

$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=9.04
DISTRIB_CODENAME=jaunty
DISTRIB_DESCRIPTION="Ubuntu 9.04"

Mas o Debian tem /etc/debian_version:

$ cat /etc/debian_version
5.0.2

Fedora, Red Hat e CentOS possuem:

Fedora: $ cat /etc/Fedora-release
Fedora release 10 (Cambridge)

Red Hat/older CentOS: $ cat /etc/redhat-release
CentOS release 5.3 (Final)

newer CentOS: $ cat /etc/centos-release
CentOS Linux release 7.1.1503 (Core)

Gentoo:

$ cat /etc/gentoo-release
Gentoo Base System release 1.12.11.1

Eu não tenho um sistema SUSE disponível no momento, mas acredito que seja /etc/SuSE-release.

O Slackware possui /etc/slackware-release e/ou /etc/slackware-version.

Mandriva tem /etc/mandriva-release.

Para a maioria das distribuições populares,

$ cat /etc/*{release,version}

na maioria das vezes funciona. As instalações "server" desmontadas e barebones podem não ter o pacote 'release' para a distribuição instalada.

Além disso, dois programas de terceiros que você pode usar para obter essas informações automaticamente são Ohai e Facter .

Observe que muitas distribuições possuem esse tipo de informação em /etc/issue ou /etc/motd, mas algumas políticas de segurança e best practices indicam que esses arquivos devem conter banners de notificação de acesso.

Relacionado: Como descobrir a versão do pacote de software instalado no nó? , fantoche .

264
jtimberman

Você também pode tentar:

$ cat /etc/issue

Geralmente (embora nem sempre) lhe dirá qual distribuição você está usando. /etc/issue é o arquivo usado para a tela de login.

39
Pablo Santa Cruz

Kernel: uname -a

20
raspi
cat /etc/os-release

no mínimo para o Ubuntu, Fedora e OpenSUSE.

Não funciona para o OS X pelo menos até 10.9 (Mavericks). Use sw_vers em vez disso.

O OpenSUSE tinha cat/etc/SuSE-release até 13.1, mas foi preterido em favor do os-release.

Redhat 6.1 tem cat/etc/redhat-release

15
sweetfa

lsb_release -a, quando disponível, é útil.

14
CesarB

cat /proc/version me encontrou a Red Hat em um VPS compartilhado.

12
iono

Kernel: uname -r

Distro: lsb_release -a

Estes serão executados na maioria dos sistemas Linux

6
Albert Z.

Um-liner

lsb_release -a && uname -r
5
Serge Stroobandt

Este problema também pode ser resolvido usingPython com o módulo platform:

Usando a função platform():

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

O comando acima retorna uma única string identificando a plataforma subjacente com o máximo de informações úteis possível.

Ou usando a função uname():

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', '')

O comando acima retorna um namedtuple() contendo seis atributos: system, node, release, version, machine e processor.

Ou usando a função dist():

python -c 'import platform; print platform.dist()'
# ('debian', '9.6', '')

O último comando tenta determinar o nome do nome da distribuição do SO Linux, mas édepreciado desde o Python 3.5e será removido em Python 3.8 .

1
simhumileco