Como determinar se um determinado Linux é 32 bit ou 64 bit?

Quando eu digito uname -a, ele dá a seguinte saída.

Linux mars 2.6.9-67.0.15.ELsmp #1 SMP Tue Apr 22 13:50:33 EDT 2008 i686 i686 i386 GNU/Linux

Como posso saber que o SO dado é 32 ou 64 bit?

Isto é útil ao escrever scripts `configure', por exemplo: para que arquitetura estou construindo?

Solução

Tente uname -m`. O que é a abreviação de `uname --machine' e sai:

x86_64 ==> 64-bit kernel
i686   ==> 32-bit kernel

Caso contrário, não para o kernel Linux, mas para a CPU, você digita:

cat /proc/cpuinfo

ou..:

grep flags /proc/cpuinfo

Sob " flags" parâmetro, você verá vários valores: veja "O que significam as bandeiras em /proc/cpuinfo?" Entre eles, um é chamado lm: Long Mode (x86-64: amd64, também conhecido como Intel 64, i.e. 64-bit capable)

lm ==> 64-bit processor

Ou utilizando lshw (como mencionado abaixo por Rolf of Saxony), sem sudo (apenas para untar a largura da cpu):

lshw -class cpu|grep "^       width"|uniq|awk '{print $2}'

**Nota: você pode ter uma CPU de 64-bit com um kernel de 32-bit instalado*.
(como ysdx menciona em sua própria resposta, "Hoje em dia, um sistema pode ser
multiarch** por isso não faz sentido de qualquer forma. Você pode querer encontrar o alvo padrão do compilador")

Comentários (13)

Se você estivesse rodando uma plataforma de 64 bits você veria x86_64 ou algo muito similar na saída de uname -a

Para que o seu hardware específico da máquina seja executado

uname -m

Você também pode chamar

getconf LONG_BIT

que retorna 32 ou 64

Comentários (6)

Esse sistema é 32bit. iX86 em uname significa que é uma arquitetura de 32 bits. Se fosse de 64 bits, ele retornaria

Linux mars 2.6.9-67.0.15.ELsmp #1 SMP Tue Apr 22 13:50:33 EDT 2008 x86_64 i686 x86_64 x86_64 GNU/Linux
Comentários (1)