Come faccio a sapere se eseguo Linux a 32 o 64 bit?


Risposte:


37

"uname -m" è il comando che stai cercando. Puoi eseguire sia 32 bit sia 64 bit su processori Intel e AMD moderni, quindi "uname -p" non ti aiuterà (inoltre, per lo più non funziona in questi giorni, qui core2 pensa la risposta a "uname -p" è sconosciuto").

Cercare l'esistenza di / usr / lib64 (come è stato suggerito) non ti aiuterà neanche, poiché alcuni pacchetti hardware e di sistema installeranno librerie a 32 e 64 bit per essere al sicuro. Sul mio sistema (debian) il pacchetto fakeroot fa proprio questo.

Per quanto riguarda l'output di "uname -m", se è i386 o i686 è 32 bit, se è x86_64 (o alpha, o ia64 o qualche altra architettura a 64 bit che non ho mai visto :) è 64 bit.

(a parte il divertimento, il mio server FreeBSD a 64 bit restituisce "amd64", che potrebbe essere un po 'strano per un quad core Intel ma del tutto comprensibile se conosci la storia dell'architettura x86 a 64 bit)


1
questo ti dice l'architettura di installazione o l'architettura effettiva della CPU. Ad esempio, se hai installato un sistema operativo a 32 bit su CPU a 64 bit, questo restituirebbe i686 o x86_64?
monkut,

15

uname -a e cerca x86_64. Se vuoi sapere se la tua CPU è in grado di gestire 64 bit, cat / proc / cpuinfo e cerca lm tra le bandiere.


3
cat / proc / cpuinfo | grep ^ flags | perl -e '$ _ = <>; print "x86_64 \ n": "non x86_64 \ n"'
Brad Gilbert,

6

per 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-bit

  • i686 e / o i386

64-bit

  • avrebbe x86_64 in uname -a output

6

Solo per confondere le cose, puoi eseguire un kernel a 64 bit con una userland a 32 bit, che è quello che sto facendo. In questo caso, uname -mritorna x86_64ma non ho alcuna libreria a 64 bit installata, quindi la maggior parte dei programmi a 64 bit non funzionerà.

Quindi una volta che si controlla uname, è necessario cercare /lib64/ld-linux-x86-64.so.2, /lib64/libc-2.7.soe /lib/ld-linux.so.2, /lib/libc-2.7.soper vedere se 64bit e 32bit librerie sono disponibili. E per essere sicuro, esegui quei file e vedi se funzionano correttamente.

Un'altra utile informazione è l'output lsb_release -ache è cross-distro e riporterà quali moduli LSB specifici dell'architettura sono disponibili.


2
Sfortunatamente lsb_release -anon produce l'architettura userland
Joni il


2

Un altro modo per farlo è chiedere a perl quale compilatore ha detto che la dimensione di un intero lungo è:

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

vs.

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

Oppure, se hai installato gcc, lo stesso in 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

:-)


Questo ti dice cosa fa la versione predefinita di perl ..
pjc50,

@ pjc50: E il tuo punto è?
asjo,

1
il punto è che potresti avere un Perl a 32 bit su un sistema a 64 bit
niXar

@niXar: Immagino sia possibile, ma avere questo renderebbe la ... strana distribuzione Linux. Ad ogni modo, usa la versione C allora ;-)
asjo

1

Come duplicato di:

Linux + come verificare la versione di Linux a 32 bit o 64 bit

uname -m ti darà solo l'architettura / arco del kernel in esecuzione. NON ti dirà se stai eseguendo una distribuzione GNU / Linux a 32 bit su una CPU con capacità a 64 bit.

Per conoscere la tua capacità della CPU:

 cat /proc/cpuinfo

Il flag "LM" dovrebbe essere presente nei sistemi a 64 bit in quanto rappresenta "LONG MODE" (estensioni a 64 bit, AMD64 AMD64 o Intel EM64T).



0

Se hai / usr / lib64 stai eseguendo x86_64 ..


3
mkdir / usr / lib128 && echo "Ma guarda, ho un computer a 128 bit!"
niXar

0

Il comando di Brad Gilbert aveva un bug perl. L'ho corretto e il comando seguente funziona: cat / proc / cpuinfo | grep ^ flags | perl -e '$ = <>; print ($ ? "x86_64 \ n": "non x86_64 \ n")'

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.