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


Respostas:


37

"uname -m" é o comando que você está procurando. Você pode executar 32 bits e 64 bits nos modernos processadores Intel e AMD, para que "uname -p" não o ajude (além disso, na maioria das vezes não funciona nos dias de hoje, este aqui core2 acha a resposta para "uname -p" É desconhecido").

Procurar a existência de / usr / lib64 (como foi sugerido) também não ajudará, pois alguns pacotes relacionados a hardware e sistema instalarão as bibliotecas de 32 bits e 64 bits para ficarem seguros. No meu sistema (debian), o pacote fakeroot faz exatamente isso.

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

(como um divertimento à 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 o histórico da arquitetura x86 de 64 bits)


1
isso indica a arquitetura de instalação ou a arquitetura real da CPU. Por exemplo, se você instalou o SO de 32 bits na CPU de 64 bits, isso retornaria i686 ou x86_64?
monkut

15

uname -a e procure por x86_64. Se você quiser saber se sua CPU suporta 64 bits, cat / proc / cpuinfo e procure por lm dentro dos sinalizadores.


3
cat / proc / cpuinfo | sinalizadores grep ^ | perl -e '$ _ = <>; print "x86_64 \ n": "Não é 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 e / ou i386

64 bits

  • teria x86_64 na saída -a uname

6

Apenas para confundir as coisas, você pode executar um kernel de 64 bits com uma terra de usuário de 32 bits, que é o que estou fazendo. Nesse caso, uname -mretorna , x86_64mas não tenho bibliotecas de 64 bits instaladas para que a maioria dos programas de 64 bits não seja executada.

Então, quando você verificar uname, você precisa olhar para /lib64/ld-linux-x86-64.so.2, /lib64/libc-2.7.soe /lib/ld-linux.so.2, /lib/libc-2.7.sopara ver se 64bit e 32bit bibliotecas estão disponíveis. E para ter certeza, execute esses arquivos e verifique se eles são executados corretamente.

Outra informação útil é a saída da lsb_release -aqual é a distribuição cruzada e relatará quais módulos LSB específicos da arquitetura estão disponíveis.


2
Infelizmente lsb_release -anão saída a arquitetura userland
Joni


2

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

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

vs.

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

Ou, se você possui 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

:-)


Isso só diz o que a versão padrão do perl faz ..
pjc50

@ pjc50: E seu ponto é?
Asjo

1
Seu ponto é que você poderia ter um 32 bit Perl em um sistema de 64 bits
Nixar

@niXar: Eu acho que isso é possível, mas ter isso tornaria a distribuição Linux estranha. De qualquer forma, use a versão C então ;-) #
asjo

1

Como uma duplicata de:

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

O uname -m fornecerá apenas o 'arch' / arquitetura em execução do kernel. NÃO informará se você está executando uma distribuição GNU / Linux de 32 bits em uma CPU com capacidade de 64 bits.

Para conhecer sua capacidade de CPU:

 cat /proc/cpuinfo

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


0
$ uname -p

x86_64

2
"uname -p" retorna "athellon" no meu sistema - não é muito útil ... #
Webwesen

3
Eu correr em máquinas onde eu recebo "desconhecido" de -p uname bem ..
Cube_Zombie

0

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


3
mkdir / usr / lib128 && echo "Olha, eu tenho um computador de 128 bits!"
NiXar 16/04

0

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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.