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.




