2009-07-22 19:20:02 +0000 2009-07-22 19:20:02 +0000
211
211

Como descubro que versão do Linux estou a correr?

Existe alguma forma de determinar que versão (distribuição & versão do kernel, suponho) do Linux está a correr (a partir da linha de comandos), que funciona em qualquer sistema Linux?

答案 (9)

269
269
269
2009-07-22 19:34:33 +0000

O kernel é universalmente detectado com uname:

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

Não existe realmente uma forma de distribuição cruzada para determinar em que distribuição e versão se encontra. Tem havido tentativas de tornar isto consistente, mas em última análise varia, infelizmente. As ferramentas LSB fornecem esta informação, mas ironicamente não são instaladas por defeito em todo o lado. Exemplo num 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 mais próximo e amplamente disponível é verificar os ficheiros /etc/something-release. Estes existem na maioria das plataformas comuns, e nos 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 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 de momento um sistema SUSE disponível, mas acredito que seja /etc/SuSE-release.

Slackware tem /etc/slackware-release e/ou /etc/slackware-version.

Mandriva tem /etc/mandriva-release.

Para a maioria das distribuições populares então,

$ cat /etc/*{release,version}

funcionarão mais frequentemente. Instalações de “servidores” de barebones e descascados podem não ter o pacote “release” para a distribuição instalado.

Adicionalmente, dois programas de terceiros que pode utilizar para obter automaticamente esta informação são Ohai e Facter .

Note que muitas distribuições têm este tipo de informação em /etc/issue ou /etc/motd, mas algumas políticas de segurança e melhores práticas indicam que estes ficheiros devem conter banners de notificação de acesso.

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

42
42
42
2009-07-22 19:58:38 +0000

Pode também tentar:

$ cat /etc/issue

Normalmente (nem sempre, no entanto) diz-lhe qual a distribuição que está a utilizar. /etc/issue é o ficheiro utilizado para o ecrã de início de sessão.

20
20
20
2009-07-22 19:21:27 +0000

Núcleo: uname -a

16
16
16
2014-04-02 22:56:41 +0000
cat /etc/os-release

no mínimo para Ubuntu, Fedora e OpenSUSE.

Não funciona para OS X pelo menos até 10,9 (Mavericks). Utilize sw_vers em vez disso.

O OpenSUSE tinha cat /etc/SuSE-release* até 13.1 mas é depreciado a favor da os-release.

Redhat 6.1 tem cat /etc/redhat-release*.

14
14
14
2009-07-22 23:48:08 +0000

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

12
12
12
2014-06-26 06:59:45 +0000

A cat /proc/version encontrou-me no Red Hat num VPS partilhado.

6
6
6
2015-06-18 17:06:13 +0000

Kernel: uname -r

Distro: lsb_release -a

Estes funcionarão na maioria dos sistemas Linux

5
5
5
2018-01-29 14:51:31 +0000

One-liner

lsb_release -a && uname -r
1
1
1
2019-01-08 07:25:25 +0000

Este assunto também pode ser resolvido usando * Python 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 restaura uma única string identificando a plataforma subjacente com o máximo de informação útil possível. O comando acima _ devolve um uname() contendo seis atributos: namedtuple(), system, node, release, version, machine, processor, dist() e &007. O último comando _tries para determinar o nome da distribuição do SO Linux, mas é depreciso desde Python 3.5* e _ será removido em Python 3.8* _.