Comment savoir si j'utilise Linux 32 ou 64 bits?

Réponses:

37

"uname -m" est la commande que vous recherchez. Vous pouvez exécuter à la fois 32 bits et 64 bits sur des processeurs Intel et AMD modernes, donc "uname -p" ne va pas vous aider (en plus cela ne fonctionne généralement pas de nos jours, ici core2 pense que la réponse à "uname -p" est "inconnu").

La recherche de l'existence de / usr / lib64 (comme cela a été suggéré) ne vous aidera pas non plus, car certains packages liés au matériel et au système installeront des bibliothèques 32 bits et 64 bits pour être du bon côté. Sur mon système (debian), le paquet fakeroot fait exactement cela.

Quant à la sortie de "uname -m", si c'est i386 ou i686 c'est 32 bits, si c'est x86_64 (ou alpha, ou ia64 ou une autre architecture 64 bits que je n'ai jamais vu :) c'est 64 bits.

(pour le plaisir, mon serveur FreeBSD 64 bits renvoie "amd64", ce qui peut être un peu étrange pour un quadcore Intel mais totalement compréhensible si vous connaissez l'histoire de l'architecture x86 64 bits)

flinkflonk
la source
1
cela vous indique-t-il l'architecture d'installation ou l'architecture réelle du processeur? Par exemple, si vous avez installé un système d'exploitation 32 bits sur un processeur 64 bits, cela retournerait-il i686 ou x86_64?
monkut
15

uname -a et recherchez x86_64. Si vous voulez savoir si votre CPU peut gérer 64 bits, cat / proc / cpuinfo et recherchez lm dans les drapeaux.

kashani
la source
3
cat / proc / cpuinfo | grep ^ drapeaux | perl -e '$ _ = <>; print "x86_64 \ n": "not x86_64 \ n"'
Brad Gilbert
6

pour 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 et / ou i386

64 bits

  • aurait x86_64 en sortie uname -a
webwesen
la source
6

Juste pour confondre les choses, vous pouvez exécuter un noyau 64 bits avec un espace utilisateur 32 bits, ce que je fais. Dans ce cas, uname -mrenvoie x86_64mais je n'ai pas de bibliothèques 64 bits installées, donc la plupart des programmes 64 bits ne fonctionneront pas.

Donc , une fois que vous vérifiez uname, vous devez rechercher /lib64/ld-linux-x86-64.so.2, /lib64/libc-2.7.soet /lib/ld-linux.so.2, /lib/libc-2.7.sopour voir si les bibliothèques 64bit et 32bit sont disponibles. Et pour vous en assurer, exécutez ces fichiers et voyez s'ils s'exécutent correctement.

Une autre information utile est la sortie lsb_release -aqui est une distribution croisée et rapportera quels modules LSB spécifiques à l'architecture sont disponibles.

TRS-80
la source
2
Malheureusement, lsb_release -ane produit pas l'architecture de l'espace utilisateur
Joni
6

$> getconf LONG_BIT Réponse: 32 ou 64.

Dennis Winter
la source
2

Une autre façon de le faire est de demander à perl ce que le compilateur a dit que la taille d'un entier long est:

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

contre.

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

Ou, si vous avez installé gcc, la même chose en 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

contre.

[...]
> EOC
$ gcc -Wall -o bits bits.c
$ ./bits
32

:-)

asjo
la source
Cela vous indique simplement ce que fait la version par défaut de perl.
pjc50
@ pjc50: Et votre point est?
asjo
1
son point est que vous pourriez avoir un Perl 32 bits sur un système 64 bits
niXar
@niXar: Je suppose que c'est possible, mais avoir cela rendrait la distribution Linux assez étrange. Quoi qu'il en soit, utilisez alors la version C ;-)
asjo
1

En double de:

Linux + comment vérifier la version linux 32 bits ou 64 bits

uname -m ne vous donnera que l '«arch» / architecture en cours d'exécution du noyau. Il ne vous dira PAS si vous exécutez une distribution GNU / Linux 32 bits sur un processeur capable de 64 bits.

Pour connaître vos capacités CPU:

 cat /proc/cpuinfo

Le drapeau «LM» devrait être présent dans les systèmes 64 bits car il représente le «MODE LONG» (extensions 64 bits, AMD64 d'AMD ou EM64T d'Intel).

CloudWeavers
la source
0
$ uname -p

x86_64
Matt Simmons
la source
2
"uname -p" renvoie "athlon" sur mon système - pas trop utile ...
webwesen
3
Je suis tombé sur des machines où je reçois aussi "unknown" de uname -p ..
Cube_Zombie
0

Si vous avez / usr / lib64, vous exécutez x86_64 ..

Cube_Zombie
la source
3
mkdir / usr / lib128 && echo "Regardez ma ', j'ai un ordinateur 128 bits!"
niXar
0

La commande de Brad Gilbert avait un bug perl. Je l'ai corrigé et la commande ci-dessous fonctionne: cat / proc / cpuinfo | grep ^ drapeaux | perl -e '$ = <>; print ($ ? "x86_64 \ n": "not x86_64 \ n")'


la source