¿Cómo sé si estoy ejecutando Linux de 32 o 64 bits?


Respuestas:


37

"uname -m" es el comando que estás buscando. Puede ejecutar 32 bits y 64 bits en procesadores Intel y AMD modernos, por lo que "uname -p" no lo ayudará (además, en su mayoría no funciona en estos días, aquí core2 piensa que la respuesta a "uname -p" es desconocido").

Buscar la existencia de / usr / lib64 (como se ha sugerido) tampoco lo ayudará, ya que algunos paquetes relacionados con el hardware y el sistema instalarán bibliotecas de 32 bits y 64 bits para estar seguros. En mi sistema (debian) el paquete fakeroot hace exactamente eso.

En cuanto a la salida de "uname -m", si es i386 o i686 es de 32 bits, si es x86_64 (o alfa, o ia64 o alguna otra arquitectura de 64 bits que nunca he visto :) es de 64 bits.

(como una diversión aparte, mi servidor FreeBSD de 64 bits devuelve "amd64", lo que puede ser un poco extraño para un Intel quadcore pero totalmente comprensible si conoce la historia de la arquitectura x86 de 64 bits)


1
¿esto le dice la arquitectura de instalación o la arquitectura real de la CPU? Por ejemplo, si instaló un sistema operativo de 32 bits en una CPU de 64 bits, ¿esto devolvería i686 o x86_64?
monkut

15

uname -a y busca x86_64. Si desea saber si su CPU puede manejar 64 bits, cat / proc / cpuinfo y busque lm dentro de las banderas.


3
cat / proc / cpuinfo | grep ^ banderas | perl -e '$ _ = <>; print "x86_64 \ n": "not x86_64 \ n"'
Brad Gilbert

6

para RedHat / CentOS:

$ uname -a
Linux cs-centos 2.6.18-92.1.22.el5 #1 SMP Tue Dec 16 12:03:43 EST 2008 i686 athlon i386 GNU/Linux

32 bits

  • i686 y / o i386

64 bits

  • tendría x86_64 en uname -a salida

6

Solo para confundir las cosas, puedes ejecutar un kernel de 64 bits con una tierra de usuario de 32 bits, que es lo que estoy haciendo. En este caso, uname -mregresa x86_64pero no tengo ninguna biblioteca de 64 bits instalada, por lo que la mayoría de los programas de 64 bits no se ejecutarán.

Así que una vez que haces uname, tiene que buscar /lib64/ld-linux-x86-64.so.2, /lib64/libc-2.7.soy /lib/ld-linux.so.2, /lib/libc-2.7.sopara ver si las bibliotecas de 64 bits y de 32 bits están disponibles. Y para asegurarse realmente, ejecute esos archivos y vea si se ejecutan correctamente.

Otra información útil es la salida de la lsb_release -acual es una distribución cruzada e informará qué módulos LSB específicos de la arquitectura están disponibles.


2
Por desgracia lsb_release -ano da salida a la arquitectura de espacio de usuario
Joni


2

Otra forma de hacerlo es preguntarle a Perl qué compilador dijo que el tamaño de un entero largo es:

$ perl -MConfig -e 'print $Config{longsize}*8 . "\n";'
64

vs.

$ perl -MConfig -e 'print $Config{longsize}*8 . "\n";'
32

O, si tienes instalado gcc, lo mismo en C:

$ cat > bits.c <<EOC
> #include <stdlib.h>
> #include <stdio.h>
> 
> int main(void) {
>    printf("%d\n", (int)sizeof(long)*8);
> 
>    exit(0);
> }
> EOC
$ gcc -Wall -o bits bits.c
$ ./bits
64

vs.

[...]
> EOC
$ gcc -Wall -o bits bits.c
$ ./bits
32

:-)


Eso le dice lo que la versión predeterminada de Perl hace ..
pjc50

@ pjc50: ¿Y tu punto es?
asjo

1
su punto es que podrías tener un Perl de 32 bits en un sistema de 64 bits
niXar

@niXar: Supongo que es posible, pero tener eso sería una distribución bastante ... extraña de Linux. De todos modos, use la versión C entonces ;-)
asjo

1

Como un duplicado de:

Linux + cómo verificar la versión de Linux 32 Bit o 64 Bit

uname -m solo le dará la 'arquitectura' / arquitectura en ejecución del núcleo. NO le dirá si está ejecutando una distribución GNU / Linux de 32 bits en una CPU con capacidad de 64 bits.

Para conocer la capacidad de su CPU:

 cat /proc/cpuinfo

El indicador 'LM' debe estar presente en los sistemas de 64 bits ya que representa 'MODO LARGO' (Extensiones de 64 bits, AMD64 de AMD o EM64T de Intel).


0
$ uname -p

x86_64

2
"uname -p" devuelve "athlon" en mi sistema - no es muy útil ...
webwesen

3
Me he encontrado en las máquinas donde consigo "desconocido" de uname -p, así ..
Cube_Zombie

0

Si tienes / usr / lib64 estás ejecutando x86_64 ..


3
mkdir / usr / lib128 && echo "¡Mira, tengo una computadora de 128 bits!"
niXar

0

La orden de Brad Gilbert tenía un error perl. Lo arreglé y el siguiente comando funciona: cat / proc / cpuinfo | grep ^ banderas | perl -e '$ = <>; print ($ ? "x86_64 \ n": "no x86_64 \ n")'

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.