Como descubro qual versão do Linux estou executando?

209

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

Daryl Spitzer
fonte

Respostas:

267

O kernel é universalmente detectado com uname:

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

Realmente não existe uma maneira de distribuição cruzada para determinar em que distribuição e versão você está. Houve tentativas de tornar isso consistente, mas, no final das contas, isso 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 lsb-releasepacote instalado:

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

Caso contrário, o método mais amplamente disponível é a verificação de arquivos. Eles existem na maioria das plataformas comuns e em seus derivados (ou seja, Red Hat e CentOS)./etc/something-release

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

O Fedora, Red Hat e CentOS têm:

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

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

O Slackware possui /etc/slackware-releasee / ou /etc/slackware-version.

Mandriva tem /etc/mandriva-release.

Para a maioria das distribuições populares,

$ cat /etc/*{release,version}

funcionará mais frequentemente. As instalações de "servidor" removidas e barebones podem não ter o pacote 'release' da distribuição instalado.

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

Observe que muitas distribuições têm esse tipo de informação em /etc/issueou /etc/motd, mas algumas políticas e práticas recomendadas de segurança 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ó? , .

jtimberman
fonte
3
Lol aqui eu estava pensando em sugerir: procure About!
Ivo Flipse 22/07/2009
2
O Slackware possui a versão / etc / slackware
Ken Keenan
Obrigado Ken, também não tenho um sistema slackware.
#
4
IOW: ls / etc / * {liberação, versão} e examinar o que vem de volta ...
Freiheit
1
A maioria também tem / etc / issue
Drew Stephens
41

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.

Pablo Santa Cruz
fonte
2
Este é o único que o acertou em um servidor compartilhado do Media Temple. Obrigado!!
TryTryAgain
2
Ha, no RedHat, isso é apenas\S[newline]Kernel \r on an \m
ruffin 02/02
20

Núcleo: uname -a

raspi
fonte
+1. Para sistemas semelhantes, como MinGW , o "-a" é necessário para obter as informações da versão, por exemplo, "MINGW32_NT-5.1 LAP065 1.0.17 (0.48 / 3/2) 2011-04-24 23:39 i686 Msys".
Peter Mortensen
15
cat /etc/os-release

no mínimo para Ubuntu, Fedora e OpenSUSE.

Não funciona no OS X pelo menos até 10.9 (Mavericks). Use sw_vers .

O OpenSUSE teve a versão cat / etc / SuSE até 13.1, mas foi preterido em favor da liberação do sistema operacional.

O Redhat 6.1 possui cat / etc / redhat-release

sweetfa
fonte
14

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

CesarB
fonte
12

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

iono
fonte
6

Núcleo: uname -r

Distro: lsb_release -a

Eles serão executados na maioria dos sistemas Linux

Albert Z.
fonte
5

One-liner

lsb_release -a && uname -r
Serge Stroobandt
fonte
1
Isso pode ser mais apropriado como um comentário na resposta de Albert Z.
precisa saber é o seguinte
1
poderosa resposta para concluir todas as respostas! Devo upvote para o esforço :)
B.Kocis
1

Esse problema também pode ser resolvido usando o Python com o platformmódulo :

Usando a platform()função:

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 cadeia de caracteres que identifica a plataforma subjacente com o máximo de informações úteis possível.

Ou usando a uname()função:

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 uma namedtuple()contendo seis atributos: system, node, release, version, machine, e processor.

Ou usando a dist()função:

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 está obsoleto desde o Python 3.5 e será removido no Python 3.8 .

simhumileco
fonte