Wie kann ich unter GNU / Linux den Namen meines CPU-Modells ermitteln?

1391
einpoklum

Ich kenne verschiedene Möglichkeiten, um Informationen zu meiner CPU in einer GNU / Linux-Umgebung zu erhalten, von cat /proc/cpuidverschiedenen Dienstprogrammen, siehe zB hier

Allerdings scheint mir keiner von ihnen zu sagen, wie mein CPU- Modellname ist. Ich meine, ich habe (zur Diskussion) einen Intel Pentium 4 530J . Die Informationen, die ich dazu erhalten kann, sind im Wesentlichen: Hersteller / Anbieter, Familienmodell-Schrittschritt, Taktgeschwindigkeit (einige weitere Felder, aber dies sollte ausreichen, um die Marke eindeutig zu identifizieren).

Unter Windows haben wir (wie in Bier) kostenlose Dienstprogramme wie HWInfo, die uns den Markennamen nennen (in meinem Fall - die Nummer 530 muss irgendwo erscheinen). Gibt es nicht auch für Linux etwas Ähnliches?

Anmerkungen:

  • Bitte keine grafische Umgebung. Streng Befehlszeile ...
  • HWInfo erkennt die CPU als "Intel Pentium 4 530J (Prescott, E0)". Das ist im Grunde das, was ich sehen möchte.
2

2 Antworten auf die Frage

4
Journeyman Geek

Das einfachste wäre nativ cat /proc/cpuinfo|grep vendor_id

[geek@phoebe ~]$ cat /proc/cpuinfo | grep vendor_id vendor_id : GenuineIntel vendor_id : GenuineIntel 

(Zweimal gedruckt, da dies ein Dual-Core-System ist)

Interessanter diese dosen't mit meinem Raspi arbeiten, die ein ganz anderes Format hat

Ich glaube nicht, dass es auf vielen Distributionen vorinstalliert ist, aber lshw würde den Trick auch tun. Verwenden Sie die -class cpuFlagge, um die relevanten Informationen einfach auszugeben

 Sudo Lshw -Klasse CPU *-Zentralprozessor Beschreibung: CPU Produkt: Celeron (Fill By OEM) Hersteller: Intel Corp. physikalische id: 34 Businfo: CPU @ 0 Version: Intel (R) Celeron (R) CPU N2807 bei 1,58 GHz Steckplatz: SOCKET 0 Größe: 1960MHz Kapazität: 2400 MHz Breite: 64 Bit Takt: 83MHz 

Ebenso funktioniert das auf meinem Himbeer-Pi nicht genauso. Dies sollte jedoch mit x86-Boxen übereinstimmen.

Der entsprechende Name des AMD-Anbieters für lshw ist Advanced Micro Devices (AMD). Die Auslesung / proc / cpuinfo für Anbieter-ID ist AuthenticAMD

(Eine vollständige Liste der vendor_ids finden Sie hier )

Kurz gesagt, die Herstellerflagge sollte die "Marke" identifizieren und die Produktflagge sollte angeben, was als verkauft wird.

Die Implementierung der virtuellen Datei `/ proc / cpuinfo` ist in den architekturspezifischen Teilen des Linux-Kernels enthalten. Deshalb sieht es bei ARM und MIPS und so weiter aus. Daniel B vor 9 Jahren 1
Das löst mein Problem nicht. In beiden Fällen enthält die Ausgabe nicht den Markennamen. `GenuineIntel` sagt mir nicht viel und` Sudo lshw -class cpu | grep-Version: `ergibt` 15.4.1 '(was Family.Model.Stepping ist). einpoklum vor 9 Jahren 0
Nicht Version, Anbieter. GenuineIntel ist die Lieferanten-ID für Intel Journeyman Geek vor 9 Jahren 0
Ich denke, er will den Modellnamen, nicht den Markennamen. Daniel B vor 9 Jahren 2
@DanielB: Was lshw auch ausgibt - es ist seltsam, dass sein System dies nicht tut, aber ich nehme an, ich brauche eine größere Stichprobengröße. Journeyman Geek vor 9 Jahren 0
Nun, anscheinend tut es das nicht für ihn. Ich weiß nicht, ob Linux oder `lshw` von einer internen Datenbank von CPU-Modellen abhängen. Daniel B vor 9 Jahren 0
@DanielB: Ein Hinweis zu dem, was ich erwartet habe, wurde hinzugefügt. einpoklum vor 9 Jahren 0
@JourneymanGeek Auch `lscpu` ist nur ein Befehl zum Anzeigen von CPU-Spezifikationen und -Modellen. αғsнιη vor 9 Jahren 0
0
Daniel B

In Wikipedia gibt es zu diesem Zweck ein Beispiel für eine Assembly ( nur x86_64 ):

.section .data  s0 : .asciz "Processor Brand String: %.48s\n" err : .asciz "Feature unsupported.\n"  .section .text  .global main .type main,@function .align 32 main: pushq %rbp movq %rsp, %rbp subq $48, %rsp pushq %rbx  movl $0x80000000, %eax cpuid  cmpl $0x80000004, %eax jl error  movl $0x80000002, %esi movq %rsp, %rdi  .align 16 get_brand: movl %esi, %eax cpuid  movl %eax, (%rdi) movl %ebx, 4(%rdi) movl %ecx, 8(%rdi) movl %edx, 12(%rdi)  addl $1, %esi addq $16, %rdi cmpl $0x80000004, %esi jle get_brand  print_brand: movq $s0, %rdi movq %rsp, %rsi xorb %al, %al call printf  jmp end  .align 16 error: movq $err, %rdi xorb %al, %al call printf  .align 16 end: popq %rbx movq %rbp, %rsp popq %rbp xorl %eax, %eax ret 

Legen Sie diesen Code beispielsweise in eine Datei ab cpumodel.Sund kompilieren Sie ihn mit gcc / gas:

gcc cpumodel.S -o cpumodel 

Danach können Sie es ausführen:

$ ./cpumodel Processor Brand String: Intel(R) Core(TM)2 Duo CPU T7300 @ 2.00GHz 

Diese Methode wird wahrscheinlich nicht für Sie funktionieren, da Pentium 4 / D-CPUs ihren Modellnamen auf diese Weise nicht zur Verfügung haben. Wie Sie hier sehen können, enthalten die CPUID-Daten nicht das, was Sie möchten.

Wenn ich versuche, es zu kompilieren, bekomme ich: cpumodel.S: Assembler-Meldungen: \ n cpumodel.S: 12: Fehler: falscher Registername \ '% rbp' \ n cpumodel.S: 13: Fehler: falscher Registername \ "% rsp" usw. einpoklum vor 9 Jahren 0
Es ist auch nicht wahr, dass nichts anderes will. HWInfo verwendet eine Datenbank mit Markennamen und ist nicht nur auf die Berichte der CPU angewiesen. einpoklum vor 9 Jahren 0
Datenbanken funktionieren offensichtlich, aber nur wenn sie enthalten, was Sie nachschlagen möchten. Sie haben auf der anderen Antwort angegeben, dass es nicht funktioniert. Anscheinend ist dieser Code nur für x86-64, das tut mir leid. Da `/ proc / cpuinfo` die gleichen Informationen enthält, bezweifle ich, dass sich daraus irgendetwas Nützliches ergibt. Daniel B vor 9 Jahren 1
Oh, im Gegenteil - es funktioniert mit HWInfo unter Windows ... einpoklum vor 9 Jahren 0
Ja, also was? Warum denken Sie, dass der Linux-Kernel eine integrierte CPU-Modelldatenbank hat? Wenn Ihre CPU diese CPUID-Abfrage nicht unterstützt (möglicherweise, weil sie im BIOS-Setup deaktiviert ist), haben Sie einfach kein Glück. Daniel B vor 9 Jahren 0
Ich suche ein Hilfsprogramm mit der entsprechenden Datenbank ... einpoklum vor 9 Jahren 0