Woher weiß ich, ob ich 32- oder 64-Bit-Linux verwende?


Antworten:


37

"uname -m" ist der Befehl, den Sie suchen. Sie können sowohl 32-Bit als auch 64-Bit auf modernen Intel- und AMD-Prozessoren ausführen, so dass "uname -p" Ihnen nicht weiterhilft (außerdem funktioniert es heutzutage meistens nicht, dies hier meint core2 die Antwort auf "uname -p". ist unbekannt").

Die Existenz von / usr / lib64 (wie vorgeschlagen) zu suchen, wird Ihnen ebenfalls nicht helfen, da einige Hardware- und System-bezogene Pakete sowohl 32-Bit- als auch 64-Bit-Bibliotheken installieren, um auf der sicheren Seite zu sein. Auf meinem (Debian-) System macht das fakeroot-Paket genau das.

Was die Ausgabe von "uname -m" betrifft, wenn es sich um i386 oder i686 handelt, dann sind es 32 Bit, wenn es sich um x86_64 (oder Alpha oder ia64 oder eine andere 64-Bit-Architektur handelt, die ich noch nie gesehen habe :), dann sind es 64 Bit.

(Spaß beiseite, mein 64-Bit-FreeBSD-Server gibt "amd64" zurück, was für einen Intel-Quadcore etwas seltsam sein könnte, aber völlig verständlich ist, wenn Sie die Geschichte der 64-Bit-x86-Architektur kennen.)


1
Gibt dies Aufschluss über die Installationsarchitektur oder die tatsächliche CPU-Architektur. Wenn Sie beispielsweise ein 32-Bit-Betriebssystem auf einer 64-Bit-CPU installiert haben, würde dies i686 oder x86_64 zurückgeben?
Monkut

15

uname -a und suche nach x86_64. Wenn Sie wissen möchten, ob Ihre CPU 64-Bit unterstützt, müssen Sie cat / proc / cpuinfo und in den Flags nach lm suchen.


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

6

für 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 und / oder i386

64-Bit

  • hätte x86_64 in uname -a ausgegeben

6

Nur um die Dinge zu verwirren, können Sie einen 64-Bit-Kernel mit einem 32-Bit-Benutzerland ausführen, was ich auch tue. In diesem Fall uname -mkehrt x86_64aber ich habe nicht alle 64 - Bit - Bibliotheken so dass die meisten 64 - Bit - Programme installieren nicht ausgeführt werden .

Also , wenn Sie uname überprüfen, müssen Sie suchen /lib64/ld-linux-x86-64.so.2, /lib64/libc-2.7.sound /lib/ld-linux.so.2, /lib/libc-2.7.soum zu sehen , ob 64 - Bit und 32 - Bit - Bibliotheken zur Verfügung stehen. Führen Sie diese Dateien aus, um sicherzustellen, dass sie ordnungsgemäß ausgeführt werden.

Eine weitere nützliche Information ist die Ausgabe von lsb_release -across-distro, in der angegeben wird, welche architekturspezifischen LSB-Module verfügbar sind.


2
lsb_release -aDie Userland-Architektur wird leider nicht ausgegeben
Joni


2

Eine andere Möglichkeit besteht darin, Perl zu fragen, welcher Compiler die Größe einer langen Ganzzahl angibt:

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

gegen

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

Oder, wenn du gcc installiert hast, dasselbe 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

gegen

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

:-)


Das sagt dir nur, was die Standardversion von Perl macht.
pjc50

@ pjc50: Und dein Punkt ist?
Asjo

1
Sein Punkt ist, dass Sie eine 32-Bit-Perl auf einem 64-Bit-System haben
könnten

@niXar: Ich denke, das ist möglich, aber das würde zu einer ziemlich ... seltsamen Linux-Distribution führen. Verwenden Sie dann auf
jeden Fall

1

Als Duplikat von:

Linux + wie man Linux Version 32 Bit oder 64 Bit verifiziert

uname -m gibt dir nur den laufenden 'Bogen' / die Architektur des Kernels. Es wird NICHT angezeigt, ob Sie eine 32-Bit-GNU / Linux-Distribution auf einer 64-Bit-fähigen CPU ausführen.

So kennen Sie Ihre CPU-Kapazität:

 cat /proc/cpuinfo

Das 'LM'-Flag sollte in 64-Bit-Systemen vorhanden sein, da es den' LONG MODE'-Modus darstellt (64-Bit-Erweiterungen, AMDs AMD64 oder Intels EM64T).



0

Wenn Sie / usr / lib64 haben, führen Sie x86_64 aus.


3
mkdir / usr / lib128 && echo "Schau ma ', ich habe einen 128 Bit Computer!"
NiXar

0

Brad Gilberts Befehl hatte einen Perl-Fehler. Ich habe es behoben und der folgende Befehl funktioniert: cat / proc / cpuinfo | grep ^ flags | perl -e '$ = <>; print ($ ? "x86_64 \ n": "nicht x86_64 \ n")'

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.