Cuando escribo uname -a
, da la siguiente salida.
Linux mars 2.6.9-67.0.15.ELsmp #1 SMP Tue Apr 22 13:50:33 EDT 2008 i686 i686 i386 GNU/Linux
¿Cómo puedo saber a partir de esto que el sistema operativo dado es de 32 o 64 bits?
Esto es útil al escribir scripts de configuración
, por ejemplo: ¿para qué arquitectura estoy construyendo?
Prueba con uname -m
. Que es la abreviatura de uname --machine
y sale:
x86_64 ==> 64-bit kernel
i686 ==> 32-bit kernel
En caso contrario, no para el kernel de Linux, sino para la CPU, se escribe:
cat /proc/cpuinfo
o:
grep flags /proc/cpuinfo
En el parámetro "flags", verá varios valores: ver "¿Qué significan los flags en /proc/cpuinfo?"
Entre ellos, uno se llama lm
: Long Mode
(x86-64: amd64, también conocido como Intel 64, es decir, capaz de 64 bits)
lm ==> 64-bit processor
O usando lshw
(como se menciona abajo por Rolf de Sajonia), sin sudo
(sólo para gregar el ancho de la cpu):
lshw -class cpu|grep "^ width"|uniq|awk '{print $2}'
Nota: puedes tener una CPU de 64 bits con un kernel de 32 bits instalado.
(como menciona ysdx en su propia respuesta, "Hoy en día, un sistema puede ser multiarch por lo que no tiene sentido de todos modos. Tal vez quieras encontrar el objetivo por defecto del compilador")
Si estuviera ejecutando una plataforma de 64 bits, vería x86_64 o algo muy similar en la salida de uname -a
Para obtener el nombre del hardware específico de su máquina, ejecute
uname -m
También puede llamar a
getconf LONG_BIT
que devuelve 32 o 64
Ese sistema es de 32 bits. iX86 en uname
significa que es una arquitectura de 32 bits. Si fuera de 64 bits, devolvería
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