Wenn ich eine Katze in / proc / cpuinfo mache, zeigt sie eine Zeile mit clflushsize: 64
Bedeutet dies, dass mein Kernel in 64 Bit ausgeführt wird?
uname -a
wird Ihnen den Kernel sagen - das Endbit sagt Ihnen die Architektur.
Zwei Beispiele:
Mein 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
Mein Dreamhost-Hosting:
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 Bit
x86_64 = 64 Bit
uname -m
gibt Ihnen die Architektur, für die der Kernel kompiliert wurde. Wenn es gedruckt wird,i686
ist Ihr Kernel 32-Bit, wennx86_64
es 64-Bit ist, vorausgesetzt, Sie haben einen Intel / AMD-Chip.quelle
i386
auf älteren 32-Bit-Plattformen sein (und ich habe sogar einige Pakete gesehen, die kompiliert wurdeni586
- ich bin mir nicht sicher, ob das jemals von ausgegeben werden würdeuname
)uname -m
gibt Ihnen die Architektur, die der Kernel für diesen bestimmten Prozess auswählt, nicht die native Architektur des Kernels. Siehe diesen Link .uname -m
nicht die reale Architektur berichten. Wenn dies nicht der Fall ist, möchte der Administrator höchstwahrscheinlich, dass Sie glauben, dass Sie sich auf dieser anderen Architektur befinden, und dass Sie am besten akzeptieren, dass er weiß, was er tut. Wenn Sie der Administrator sind und sich damit anlegen,setarch
wissen Sie es sowieso schon besser.setarch
und Sie können ein solches Skript aufrufen, ohne zu ahnen, dass es dazu führtuname -m
, dass etwas anderes zurückgegeben wird. Es ist möglich, vielleicht sogar wahrscheinlich, dass diese Art von Problemen der Grund ist, warum das OP fragt.init
es für 32-Bit hält. Die Situation hierfür ist ein 64-Bit-Kernel mit 32-Bit-Benutzerbereich. Viele Kompilierungssysteme sind darauf angewiesenuname -m
, Compiler-Flags zu bestimmen, z. B. die von GDB. Sie müssen mit einer gefälschten Persönlichkeit versehen sein. Einige andere Userspace-Anwendungen möchten jedoch möglicherweise immer noch wissen, über welchen Kerneltyp sie verfügen (z. B. für einige Anforderungen auf niedriger Ebene), unabhängig von ihrer Persönlichkeit.Ich denke, der genaueste Weg ist
hier zeigt es genau
64
auf diesem Tipp gefunden
getconf
ist aus dem Paket libc-bin (auf Ubuntu)quelle
Wenn Sie einen einfachen, aber detaillierten Bericht über Ihr System (CPU-, Kernel- und Core OS-Software) und nicht nur über den Kernel wünschen , finden Sie hier ein kleines Bash-Skript, mit dem Sie schnell Antworten erhalten.
Wenn Sie genug über die Besonderheiten von 32-Bit / 64-Bit-CPUs und S / W wissen, ist dies einfach praktisch. Wenn Sie nicht viel wissen und denken, dass Ihr "System" entweder 32-Bit oder 64-Bit ist, können Sie feststellen, dass die Wahrheit komplexer sein kann (Teile Ihres Systems können 64-Bit sein, während andere 32-Bit), ohne Sie zu verwirren.
Auch dieses Skript (und die Antwort) sind nicht für die wörtliche Frage "Woher weiß ich, ob mein Linux-Kernel in 32-Bit oder 64-Bit ausgeführt wird?" aber für diejenigen, die auch den Bogen ihrer CPU und Kern-Betriebssystem-SW kennen wollen.
Beispielberichte
Dies sind Beispiele für einen eher ungewöhnlichen Fall:
Bericht aus dem Miniskript (für erfahrene Benutzer)
Bericht aus einem größeren Skript (für weniger erfahrene Benutzer)
Die Skripte
Mini-Skript (für erfahrene Administratoren)
Diese 4 Zeilen enthalten alle wesentlichen Informationen.
Größeres Skript (für weniger erfahrene Benutzer)
Dieses Skript enthält viele Erklärungen und ist nützlich, wenn Sie keine Erfahrung mit diesem Thema haben und mit einem besonderen Fall konfrontiert sind.
Wenn Sie mehr wissen möchten, lesen Sie diese beiden Seiten, von denen ich die meisten Informationen erhalten habe. A) /programming/246007/how-to-determine-whether-a-given-linux-is-32- Bit-oder-64-Bit b) /unix//a/134394/73271
quelle
Wenn Sie nur die Plattform sehen möchten, auf der Sie ausgeführt werden, können Sie verwenden
Die vollständige Liste der unterstützten Optionen für
uname
istquelle
uname -i
DruckeGenuineIntel
, was nicht wirklich das ist, wonach er sucht.Unknown
auf einem Mac.i386
auf meiner Maschine!CLFLUSHSIZE
sagt nichts über den Betriebsmodus des Prozessors aus. Nach dieser Antwort bezieht es sich auf die kleinste spülbare Cache-Einheit. In Ihrem Fall werden Cache-Zeilen in Einheiten von 64 Bytes gelesen / geschrieben.uname
Die Ausgabe variiert zu stark, um nützlich zu sein, wie ein Blick auf die Beispieltabelle von Wikipedia zeigt. Die zuverlässigste Methode istgetconf LONG_BIT
als Show in Wassermann Power Antwort . Dies funktioniert unabhängig von der Prozessorarchitektur und ist daher auf ARM, Power oder MIPS wie auf x86 zu Hause.quelle