Como sei se estou executando o Linux 32 ou 64 bits?

23

qual seria o comando para rodar em diferentes distros?

    
por webwesen 17.06.2009 / 22:12

10 respostas

37

"uname -m" é o comando que você está procurando. Você pode rodar tanto 32bit quanto 64bit em processadores Intel e AMD modernos, então "uname -p" não vai te ajudar (além disso, na maioria das vezes não funciona, isso aqui core2 acha que a resposta para "uname -p" é "desconhecido").

Procurando a existência de / usr / lib64 (como foi sugerido) também não irá ajudá-lo, já que alguns pacotes relacionados a hardware e sistema instalarão bibliotecas de 32 e 64 bits para garantir a segurança. No meu sistema (debian), o pacote fakeroot faz exatamente isso.

Quanto à saída de "uname -m", se for i386 ou i686 é 32bit, se for x86_64 (ou alpha, ou ia64 ou alguma outra arquitetura de 64 bits que eu nunca vi :) é 64bit.

(como uma diversão à parte, meu servidor FreeBSD de 64 bits retorna "amd64", o que pode ser um pouco estranho para um intel quadcore, mas totalmente compreensível se você conhece a história da arquitetura x86 de 64 bits)

    
por 17.06.2009 / 23:31
15

uname -a e procure por x86_64. Se você quer saber se sua CPU pode manipular 64 bits, cat / proc / cpuinfo e procurar por lm dentro dos flags.

    
por 17.06.2009 / 22:15
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 e / ou i386

64 bits

  • teria x86_64 na saída uname -a
por 17.06.2009 / 22:14
6

Apenas para confundir as coisas, você pode rodar um kernel de 64 bits com uma área de usuário de 32 bits, que é o que estou fazendo. Nesse caso, uname -m retorna x86_64 , mas eu não tenho nenhuma biblioteca de 64 bits instalada, então a maioria dos programas de 64 bits não será executada.

Portanto, depois de verificar o uname, você precisa procurar /lib64/ld-linux-x86-64.so.2 , /lib64/libc-2.7.so e /lib/ld-linux.so.2 , /lib/libc-2.7.so para ver se as bibliotecas de 64 bits e 32 bits estão disponíveis. E para ter certeza, execute esses arquivos e veja se eles são executados corretamente.

Outra informação útil é a saída de lsb_release -a que é cross-distro e informará quais módulos LSB específicos da arquitetura estão disponíveis.

    
por 18.06.2009 / 06:06
6

$> getconf LONG_BIT Resposta: 32 ou 64.

    
por 17.11.2010 / 08:24
2

Outra maneira de fazer isso é perguntar ao perl o que o compilador disse que o tamanho de um inteiro longo é:

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

vs.

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

Ou, se você tiver o gcc instalado, o mesmo em 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

: -)

    
por 18.06.2009 / 09:38
1

Como duplicata de:

Linux + como para verificar a versão 32 bits ou 64 bits do linux

uname -m só lhe dará a arquitetura / arch 'em execução' do kernel. Ele NÃO informará se você está executando uma distribuição GNU / Linux de 32 bits em uma CPU compatível com 64bits.

Para conhecer sua capacidade de CPU:

 cat /proc/cpuinfo

O sinalizador "LM" deve estar presente nos sistemas de 64 bits, pois representa o "LONG MODE" (extensões de 64 bits, o AMD64 da AMD ou o EM64T da Intel).

    
por 03.01.2012 / 16:21
0
$ uname -p

x86_64
    
por 17.06.2009 / 22:15
0

Se você tiver / usr / lib64, está executando x86_64.

    
por 17.06.2009 / 22:35
0

O comando de Brad Gilbert teve um bug perl. Eu consertei e o comando abaixo funciona: cat / proc / cpuinfo | grep ^ flags | perl -e '$ = < & gt ;; print ($ ? "x86_64 \ n": "não x86_64 \ n")'

    
por 26.05.2010 / 10:51