Respuestas:
"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)
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.
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 -m
regresa x86_64
pero 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.so
y /lib/ld-linux.so.2
, /lib/libc-2.7.so
para 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 -a
cual es una distribución cruzada e informará qué módulos LSB específicos de la arquitectura están disponibles.
lsb_release -a
no da salida a la arquitectura de espacio de usuario
$> getconf LONG_BIT
Respuesta: 32 o 64.
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
:-)
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).
$ uname -p
x86_64
Si tienes / usr / lib64 estás ejecutando x86_64 ..
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")'