uname -m
fornece o i686 e uname -m
fornece o i686 i386 na máquina do Red Hat Enterprise Linux Server versão 5.4 (Tikanga). Preciso instalar o Oracle Database 10g Release 2 nessa máquina. Então, como posso decidir se a arquitetura do kernel é 32 bits ou 64 bits?
linux
command-line
x86
cpu-architecture
user2914
fonte
fonte
uname -m
euname -m
?uname -m
mostrar i? 86, você tem um sistema de 32 bits.getconf WORD_BIT
.getconf WORD_BIT
retorna 32 no meu Ubuntu de 64 bitsRespostas:
i386 e i686 são ambos de 32 bits.
x86_64 é de 64 bits
exemplo para 64 bits:
EDIT:
Veja o meu linux ARM 32 ou 64 bits? para ARM
fonte
uname -m
. Isso só mostra a arquitetura.É simples! Use o
arch
comandofonte
arch
retornai386
, masuname -a
mostrax86_64
.@behrooz está correto. Infelizmente,
uname
você precisa conhecer arquiteturas. Na verdade, eu estava procurando uma lista de arquiteturas e encontrei este artigo que responde à sua pergunta. Em relação auname -m
:Para determinar se o hardware é capaz de executar um kernel de 64 bits
Procure o seguinte na saída (todos os sinalizadores recuperados deste fluxo de pilha respondem à mesma pergunta)
lm
flag significa CPU de modo longo - CPU de 64 bitstm
flag significa modo protegido - CPU de 32 bitsrm
flag significa Modo Real - CPU de 16 bitsfonte
(EDIT: esta resposta está errada. Obrigado ao comentário de @ Lizardx)
No Bash, usando excesso de número inteiro:
É muito mais eficiente do que invocar outro processo ou abrir arquivos.
fonte
((
é um Bashismo e não definido pela POSIX mywiki.wooledge.org/Bashism#Conditionals((1<<32)-1)
Para o Debian :
No meu PC
My Raspberry Pi 2
fonte
checkinstall
, thx!A maneira mais simples é executar:
que produzirá 64 ou 32, dependendo de 32 ou 64 bits.
por exemplo:
fonte
getconf LONG_BIT
será impresso32
que você está executando o kernel de 64 bits.use syscap do projeto Formake
O syscap permite analisar muitas propriedades do sistema e testar dependências. É um script de shell portátil.
Obtenha arquitetura da CPU:
Obtenha o nome e a versão do kernel:
fonte
Outra maneira é verificar a arquitetura para a qual um arquivo de sistema foi compilado, como
fonte
Ou você pode usar a maneira como o comando uname internamente faz se você deseja implementar algumas coisas por conta própria:
fonte
Aqui está outro método usando
uname
.De
man uname
:... -i, --hardware-platform print the hardware platform or "unknown" ...
# uname -i x86_64
#
fonte
Se você está procurando uma linha única, esta é a solução mais confiável que eu descobri que retorna 64 ou 32 . Não importa se você está executando o ARM ou não, e deve funcionar em qualquer sistema usando o bash ou sh .
Cuidado, isso pressupõe que o sistema seja de 32 ou 64 bits. Veja minha explicação abaixo se você precisar detectar a arquitetura 8-16 ou algum outro bit.
O que está acontecendo aqui?
A lógica é muito simples e tudo se resume a como os computadores armazenam números inteiros assinados. Uma arquitetura de 32 bits possui apenas 32 bits que pode ser usada para armazenar números inteiros assinados, enquanto uma arquitetura de 64 bits possui 64 bits! Em outras palavras, o conjunto de números inteiros que podem ser armazenados é finito. Metade deste conjunto representa números negativos e metade representa números positivos. O número inteiro assinado igual a -1 é representado como o maior número que pode ser armazenado em um determinado número de bits para essa arquitetura. Em um sistema de 32 bits, -1 pode ser representado pelo valor hexadecimal 0xFFFFFFFF (que é de 32 bits binários, todos iguais a 1). Em um sistema de 64 bits, 0xFFFFFFFF traduz para 4.294.967.295, base 10, enquanto 0xFFFFFFFFFFFFFFFFFF é a representação para -1). Você pode ver como isso seria facilmente dimensionado para sistemas de 8 ou 16 bits, que seriam iguais a -1 em 0xFF e 0xFFFF,
fonte