Linux / Comando uname: consultar kernel e arquitetura da máquina

uname mostra o nome e a versão de lançamento do kernel em execução e a arquitetura da máquina. Use uname -r para consultar o kernel atual e uname -m para consultar a arquitetura; esses resultados não identificam, por si só, a distribuição Linux nem todos os componentes do computador.

O kernel é o núcleo do sistema, responsável pela interação entre programas e recursos da máquina. Ubuntu e Rocky Linux são distribuições que combinam o kernel Linux com outros programas e ferramentas. Por isso, ver Linux na saída de uname não informa qual dessas distribuições está instalada.

Sintaxe e preparação

uname [opções]...

Os colchetes e as reticências descrevem argumentos opcionais; não devem ser digitados. Abra um terminal no sistema que deseja consultar e execute os exemplos abaixo. Eles apenas leem informações e não precisam de sudo. Em acesso remoto, o resultado corresponde ao ambiente onde o comando foi executado, não ao computador que abriu a conexão.

Os exemplos seguem o GNU uname. Confira a implementação instalada com uname --version e suas opções com uname --help ou man uname. Outras implementações podem ter diferenças. Se o shell não localizar o comando, confira command -v uname e a disponibilidade das ferramentas básicas da distribuição, em vez de tratar a mensagem de erro como informação do kernel.

Consultar o nome do kernel

uname

Sem argumentos, o GNU uname equivale a uname -s. Em um sistema Linux, a saída habitual é Linux. Esse nome designa o kernel: ele não distingue Ubuntu de Rocky Linux, não mostra a versão da distribuição e não constitui um inventário de hardware.

Consultar o kernel que está em execução

uname -r

A opção -r mostra a release, isto é, a identificação de lançamento do kernel atual. Guarde a cadeia completa, incluindo os sufixos da distribuição, ao conferir requisitos de um módulo ou driver. A versão do pacote recém-instalado pode ser diferente da que está em execução até que o sistema seja iniciado com esse kernel.

O comando não instala atualizações nem escolhe o kernel de inicialização. Se você esperava outra versão, confira qual kernel foi efetivamente iniciado antes de concluir que a instalação falhou. Para avaliar compatibilidade, use também os requisitos do módulo e os pacotes correspondentes da distribuição; o número mostrado por uname não substitui essas verificações.

Consultar a arquitetura da máquina

uname -m

A opção -m mostra o nome da arquitetura da máquina, como x86_64 em um ambiente dessa arquitetura. Compare-o com os requisitos da plataforma do programa que pretende usar, mas confira também a distribuição, as bibliotecas e o formato do pacote. Esse campo isolado não garante que qualquer binário para uma arquitetura semelhante será compatível.

Para detalhes do processador, consulte também o guia de lscpu, em inglês. O nome de arquitetura não é uma lista das extensões de instruções da CPU nem uma descrição completa dos dispositivos instalados.

Ler nome, release e arquitetura juntos

uname -srm

Esse comando reúne as três consultas anteriores. No GNU uname, os campos selecionados seguem a ordem definida pelo programa: nome do kernel, release do kernel e arquitetura da máquina. Esta é uma saída ilustrativa; xx representa um trecho variável, e não uma versão real que deva ser instalada:

Linux 6.8.0-xx-generic x86_64
  • Linux: nome do kernel.
  • 6.8.0-xx-generic: lugar reservado para a identificação completa de lançamento do kernel deste exemplo.
  • x86_64: arquitetura da máquina neste exemplo.

Execute as consultas separadas -s, -r e -m se precisar tratar cada informação em um script. A saída de uname -a contém mais campos, e alguns podem conter espaços. Dividir essa linha por espaços e presumir posições fixas pode produzir interpretações erradas. O manual do GNU uname descreve a ordem e as limitações desses campos.

Opções principais

Opção Informação exibida
-a Reúne as informações disponíveis. No GNU uname, os campos -p e -i são omitidos se forem desconhecidos.
-r Release do kernel em execução.
-m Nome da arquitetura da máquina.
-s Nome do kernel; é a consulta padrão quando não há opções.
-n Nome do nó na rede, também chamado hostname.

O manual uname(1) do projeto GNU Coreutils também apresenta -v para a versão de compilação do kernel e -o para o nome do sistema operacional. Não confunda -v com -r nem use -o como substituto da identificação da distribuição.

As opções -p e -i não são portáveis, inclusive entre distribuições GNU/Linux, e podem responder unknown. Esse resultado significa que o campo não está disponível nessa consulta; não demonstra que o processador não exista ou que o hardware esteja com defeito.

Distinguir a distribuição do kernel e do contêiner

Para identificar a distribuição, leia /etc/os-release com cat /etc/os-release. PRETTY_NAME fornece um nome apropriado para exibição; NAME identifica o sistema sem a versão, e VERSION_ID, quando presente, identifica a versão. Alguns campos são opcionais. A especificação de os-release orienta usar /etc/os-release e recorrer a /usr/lib/os-release somente quando o primeiro não existir, sem misturar os dados dos dois arquivos.

Em um contêiner Linux convencional, uname pode mostrar o kernel compartilhado com o sistema que o executa, enquanto os-release identifica o sistema de arquivos do próprio contêiner. Assim, uma identificação de distribuição dentro do contêiner não identifica automaticamente a distribuição do hospedeiro. Máquinas virtuais têm seu próprio kernel; quando o contêiner está dentro de uma máquina virtual, o kernel compartilhado pode ser o dessa máquina virtual. A explicação oficial do Docker sobre contêineres e máquinas virtuais apresenta essa diferença.

Na verificação disponível, GNU uname 8.32 no Bash 5.3.9 do Git para Windows executou os quatro comandos dos exemplos com status 0. A consulta sem opções retornou MINGW64_NT-10.0-28000; -r retornou 3.6.7-fb42d713.x86_64 e -m retornou x86_64. São resultados desse ambiente Windows, não uma execução nativa do Linux. Não houve teste de contêiner, inicialização de outro kernel ou compatibilidade de pacotes; a linha Linux acima permanece ilustrativa.

Pergunta frequente

Posso descobrir a versão da distribuição com uname?

Não. Uname consulta principalmente o kernel e a máquina. Leia os-release no ambiente desejado para obter a identificação da distribuição e compare separadamente com uname -r quando precisar saber qual kernel está em execução.