Linux / Como verificar a distribuição, a versão, o kernel e a arquitetura

Para identificar uma distribuição Linux e sua versão, comece lendo /etc/os-release. Seu campo PRETTY_NAME fornece um nome legível, enquanto ID e VERSION_ID fornecem identificadores que são mais fáceis de usar em scripts.

Use hostnamectl quando quiser um resumo conveniente da distribuição, do kernel e da arquitetura. Use uname -r para a versão do kernel Linux em execução atualmente, e não a versão da distribuição. Esses valores descrevem partes diferentes do sistema e não devem ser tratados como intercambiáveis.

Comandos para executar primeiro

Para verificar apenas o nome e a versão da distribuição, comece com:

cat /etc/os-release

Para mostrar apenas os campos mais úteis:

grep -E '^(PRETTY_NAME|ID|VERSION_ID|ID_LIKE)=' /etc/os-release

Execute os seguintes comandos também quando precisar da versão do kernel e da arquitetura da CPU (unidade central de processamento).

cat /etc/os-release
hostnamectl
uname -r
uname -m

O que é uma distribuição Linux?

Em sentido estrito, Linux é o kernel, ou núcleo, do sistema operacional. Uma distribuição Linux combina esse núcleo com ferramentas do sistema, bibliotecas, um gerenciador de pacotes, um instalador e configuração padrão para formar um sistema operacional utilizável.

Ubuntu, Debian, Fedora, Rocky Linux, openSUSE e Arch Linux usam o núcleo Linux, mas seus formatos de pacotes, políticas de atualização e comandos de administração diferem. Verifique a família da distribuição e a versão antes de aplicar instruções de instalação ou configuração de servidor.

Família da distribuição Distribuições comuns Formato de pacote e ferramentas Valores a verificar
Família Debian Debian, Ubuntu, Linux Mint DEB, APT ID e ID_LIKE=debian
Família Red Hat RHEL, Fedora, Rocky Linux, AlmaLinux RPM, DNF ID e valores relacionados a RHEL ou Fedora em ID_LIKE
Família SUSE openSUSE, SUSE Linux Enterprise RPM, Zypper ID e ID_LIKE=suse
Família Arch Arch Linux, Manjaro pkg.tar.zst, Pacman ID e ID_LIKE=arch
Independente Alpine Linux e outros Específico da distribuição ID e a documentação oficial da distribuição

ID_LIKE é uma informação de apoio que descreve uma família relacionada ou que serve de base à distribuição. Pode estar ausente. Use ID como o identificador principal da distribuição e consulte ID_LIKE apenas quando a compatibilidade com a família for relevante.

Verifique a distribuição e a versão em /etc/os-release

/etc/os-release armazena dados de identificação do sistema operacional como entradas KEY=value. De acordo com a especificação oficial do systemd os-release, o software deve preferir /etc/os-release e recorrer a /usr/lib/os-release quando o primeiro não estiver disponível.

Exibir todos os campos de identificação

cat /etc/os-release

Os campos exatos variam de acordo com a distribuição, mas a saída geralmente se parece com:

PRETTY_NAME="Ubuntu 24.04 LTS"
NAME="Ubuntu"
VERSION_ID="24.04"
VERSION_CODENAME=noble
ID=ubuntu
ID_LIKE=debian

Este exemplo identifica o Ubuntu 24.04 na família Debian. O texto do nível de patch e outros detalhes podem variar conforme a distribuição e o estado da atualização.

Entender os principais campos do os-release

Campo Significado Uso típico
PRETTY_NAME Nome da distribuição e versão legíveis por humanos Exibição e inspeção manual
NAME Nome do sistema operacional sem a versão Rótulos descritivos
ID Identificador de distribuição em minúsculas Seleção de comandos por distribuição em scripts
VERSION_ID Versão da distribuição destinada à comparação por máquina Verificações de versão suportada
ID_LIKE Famílias relacionadas ou que servem de base à distribuição Identificação de convenções prováveis de pacotes e configuração
VERSION_CODENAME Nome de código para o lançamento da distribuição Configuração do repositório e documentação

Uma distribuição de lançamento contínuo pode não ter uma versão principal fixa e pode omitir VERSION_ID. Um campo opcional ausente não significa que o arquivo seja inválido.

Use hostnamectl para um resumo do sistema

Em distribuições que usam systemd, hostnamectl pode mostrar o nome do host, sistema operacional, kernel e arquitetura da CPU juntos.

hostnamectl

Os campos mais úteis são:

  • Operating System — Sistema operacional: nome e versão da distribuição
  • Kernel: versão do kernel em execução
  • Architecture — Arquitetura: arquitetura do sistema
  • Virtualization — Virtualização: ambiente de máquina virtual ou contêiner detectado

hostnamectl é um resumo conveniente, mas pode não estar disponível em instalações mínimas, alguns contêineres ou distribuições que não usam systemd. Use /etc/os-release e uname nesses ambientes.

Diferencie a versão da distribuição da versão do kernel

Os valores relatados pelo uname não são lançamentos da distribuição, como Ubuntu 24.04 ou Rocky Linux 10. Eles descrevem o kernel atualmente em execução e a arquitetura de hardware.

uname -r
uname -m
uname -a
Comando Informações retornadas Exemplo de uso
uname -r Versão do kernel Verificar a compatibilidade de drivers e módulos do kernel
uname -m Arquitetura de hardware Selecionar pacotes x86_64 ou aarch64
uname -a Vários valores relacionados ao kernel em uma linha Fornecer um resumo compacto para diagnóstico

Um sistema pode manter a mesma versão da distribuição enquanto recebe um kernel mais recente. Sistemas na mesma versão da distribuição também podem executar kernels diferentes. Após uma atualização do pacote do kernel, uname -r pode continuar mostrando o kernel mais antigo até que o sistema seja reiniciado. A documentação do GNU Coreutils uname define cada opção.

Use métodos alternativos em sistemas mais antigos

Verifique com lsb_release

Se lsb_release estiver instalado, ele pode exibir o distribuidor, descrição, versão e codinome.

lsb_release -a

O comando não está incluído em todas as instalações mínimas. Verifique primeiro com command -v lsb_release. O manual de lsb_release do Debian descreve as opções dessa implementação.

Leia arquivos de versão específicos da distribuição

Em sistemas mais antigos sem /etc/os-release, use um arquivo específico da distribuição como alternativa.

cat /etc/redhat-release
cat /etc/debian_version
cat /etc/alpine-release

A disponibilidade e o formato desses arquivos diferem de acordo com a distribuição. Em automação, prefira /etc/os-release e verifique apenas os arquivos de fallback explícitos usados pelas distribuições que você suporta. Evite combinar cegamente todos os arquivos que correspondem a /etc/*release.

Detecte uma distribuição em um script de shell

Para scripts de instalação e automação de operações, use ID e VERSION_ID em vez de analisar o PRETTY_NAME legível por humanos.

if [ -r /etc/os-release ]; then
    . /etc/os-release
    printf 'distribution=%s\n' "$ID"
    printf 'version=%s\n' "${VERSION_ID:-unknown}"
    printf 'family=%s\n' "${ID_LIKE:-unknown}"
else
    printf 'distribution=unknown\n'
    uname -srm
fi

A expressão ${VERSION_ID:-unknown} usa unknown quando o valor não está definido ou está vazio. Como muitos campos do os-release são opcionais e as distribuições podem adicionar seus próprios campos, os scripts não devem presumir que cada valor existe.

Ao selecionar comandos de gerenciamento de pacotes, compare primeiro ID e use ID_LIKE apenas como uma condição de apoio. Mesmo distribuições da mesma família podem usar diferentes configurações de repositório e nomes de pacotes, portanto, pertencer à mesma família não garante que cada comando seja intercambiável.

Interprete os resultados em contêineres, WSL e chroot

Contêineres

Dentro de um contêiner, /etc/os-release normalmente identifica a distribuição do ambiente de usuário na imagem do contêiner, não o host. Em contraste, uname -r pode exibir o kernel compartilhado com o host. Pode ser normal que esses comandos pareçam descrever diferentes famílias de distribuição.

Subsistema Windows para Linux

No Subsistema Windows para Linux (WSL), /etc/os-release identifica a distribuição Ubuntu, Debian ou outra instalada. A saída de uname -r pode incluir uma string que identifica um kernel WSL. Continue a usar /etc/os-release para a versão da distribuição.

Ambientes chroot

Dentro de um chroot, /etc/os-release identifica a distribuição no sistema de arquivos do chroot, enquanto uname descreve o kernel compartilhado com o host em execução. Considere essa diferença durante trabalhos de recuperação e processos de compilação entre distribuições.

Perguntas frequentes

Qual é o comando mais confiável para verificar a versão do Linux?

Para identificar a distribuição e sua versão, comece com cat /etc/os-release. Verifique o kernel separadamente com uname -r e a arquitetura da CPU com uname -m.

Há algo errado se o hostnamectl estiver ausente ou não for executado?

Não necessariamente. Ambientes mínimos e distribuições que não usam systemd podem não fornecer hostnamectl. Use /etc/os-release e uname para recuperar as informações separadamente.

Como posso distinguir CentOS, Rocky Linux e AlmaLinux?

Verifique ID em /etc/os-release. Essas distribuições compartilham partes do mesmo modelo de administração, mas suas políticas de suporte e repositórios são separados. Não as trate como a mesma distribuição apenas com base em ID_LIKE.

x86_64 e aarch64 são versões de distribuições Linux?

Não. Eles identificam arquiteturas de hardware. Uma versão de distribuição pode fornecer imagens separadas para x86_64 e aarch64, então verifique a arquitetura ao selecionar pacotes de software ou mídia de instalação.

Resumo

Use /etc/os-release para o nome e versão da distribuição Linux, hostnamectl para um resumo conveniente do sistema, uname -r para o kernel em execução e uname -m para a arquitetura.

Em scripts, use ID, VERSION_ID e, quando necessário, ID_LIKE em vez de analisar o PRETTY_NAME. Em contêineres, WSL e ambientes chroot, lembre-se de que a distribuição em espaço de usuário e o kernel em execução podem vir de camadas diferentes.