Como sei se o kernel do meu Linux está rodando em 32 ou 64 bits?

10

Quando eu faço um gato em / proc / cpuinfo ele mostra uma linha com clflushsize: 64

Isso significa que meu kernel está rodando em 64 bits?

    
por Daniel Cukier 26.08.2009 / 13:42

6 respostas

15
uname -a

dirá o kernel - o bit final informa a arquitetura.

Dois exemplos:

Meu mac:

Darwin Mac.local 9.8.0 Darwin Kernel Version 9.8.0: Wed Jul 15 16:55:01 PDT 2009; root:xnu-1228.15.4~1/RELEASE_I386 i386

Minha hospedagem Dreamhost:

Linux ecco 2.6.24.5-serf-xeon-c6.1-grsec #1 SMP Tue Oct 7 06:18:04 PDT 2008 x86_64 GNU/Linux

i386 = 32 bits

x86_64 = 64 bits

    
por 26.08.2009 / 13:44
10

uname -m fornecerá a arquitetura para a qual o kernel é compilado. Se imprimir i686 , o seu kernel é de 32 bits, se x86_64 for 64 bits, supondo que você tenha um chip Intel / AMD.

    
por 26.08.2009 / 13:53
7

Eu acho que a maneira mais precisa é

getconf LONG_BIT

aqui mostra exatamente 64

encontrado neste dica

getconf é do pacote libc-bin (no Ubuntu)

    
por 13.06.2014 / 00:09
1

Se você quiser ver apenas a plataforma em que está sendo executado, use

uname -i

A lista completa de opções suportadas para uname é

$ uname --help
Usage: uname [OPTION]...
Print certain system information.  With no OPTION, same as -s.

  -a, --all                print all information, in the following order,
                             except omit -p and -i if unknown:
  -s, --kernel-name        print the kernel name
  -n, --nodename           print the network node hostname
  -r, --kernel-release     print the kernel release
  -v, --kernel-version     print the kernel version
  -m, --machine            print the machine hardware name
  -p, --processor          print the processor type or "unknown"
  -i, --hardware-platform  print the hardware platform or "unknown"
  -o, --operating-system   print the operating system
      --help     display this help and exit
      --version  output version information and exit
    
por 26.08.2009 / 13:54
0

CLFLUSHSIZE não informa nada sobre o modo de operação do processador. De acordo com esta resposta , refere-se à menor unidade de cache possível. No seu caso, as linhas de cache são lidas / escritas em unidades de 64 bytes.

uname output varia muito para ser útil, como mostra a tabela de exemplos da Wikipedia . O método mais confiável é getconf LONG_BIT , como mostrado na resposta da Aquarius Power . Isso funciona independentemente da arquitetura do processador, portanto, fica em casa apenas no ARM, no Power ou no MIPS, como no x86.

    
por 19.08.2015 / 10:11
0

Estes quatro comandos bash lhe dirão quase tudo que você gostaria de saber:

grep -w 'lm' /proc/cpuinfo > /dev/null && echo "You have a 64bit CPU" || echo "You have a 32bit CPU"
echo "Your kernel reports it's running on a $(uname -m|sed -e 's/x86_64/64bit/' -e 's/i.86/32bit/') machine"
echo "Your /sbin/init process is $(file /sbin/init|sed -e 's/^.* \(32\|64\)-bit.*$/bit/')"
echo "Your C compiler is setup to produce $(getconf LONG_BIT)bit executables"

Se os resultados parecerem contraditórios, observe os seguintes fatos:

  • Você pode executar kernels de 32 bits em CPUs de 64 bits (mas não o inverso)
  • Você pode executar executáveis de 32 bits em kernels de 64 bits (mas não o inverso)

e leia esta página link e esta resposta link

    
por 02.12.2015 / 21:25