Ich habe dieses Skript, aber ich weiß nicht, wie ich das letzte Element im Ausdruck erhalten kann:
cat /proc/cpuinfo | awk '/^processor/{print $3}'
Das letzte Element sollte die Anzahl der CPUs minus 1 sein.
Ich habe dieses Skript, aber ich weiß nicht, wie ich das letzte Element im Ausdruck erhalten kann:
cat /proc/cpuinfo | awk '/^processor/{print $3}'
Das letzte Element sollte die Anzahl der CPUs minus 1 sein.
Ich dachte auch cat /proc/cpuinfo
würde mir die richtige Antwort geben, aber ich habe kürzlich gesehen, dass mein ARM Quad-Core Cortex A53 System nur einen einzigen Kern anzeigt. Es scheint, dass /proc/cpuinfo nur die aktiven Kerne anzeigt, während:
cat /sys/devices/system/cpu/present
ist ein besseres Maß für das, was da ist. Sie können auch
cat /sys/devices/system/cpu/online
um zu sehen, welche Kerne online sind, und
cat /sys/devices/system/cpu/offline
um zu sehen, welche Kerne offline sind. Die Website online
, offline
y present
sysfs-Einträge geben den Index des CPUS zurück, so dass ein Rückgabewert von 0
bedeutet einfach Kern 0, während ein Rückgabewert von 1-3
bedeutet Kerne 1, 2 und 3.
Véase https://www.kernel.org/doc/Documentation/ABI/testing/sysfs-devices-system-cpu
Die folgenden Angaben sollten Ihnen die Anzahl der "echten" Kerne sowohl auf einem Hyperthreading- als auch auf einem Nicht-Hyperthreading-System anzeigen. Zumindest hat es in allen meinen Tests funktioniert.
awk -F: '/^physical/ && !ID[$2] { P++; ID[$2]=1 }; /^cpu cores/ { CORES=$2 }; END { print CORES*P }' /proc/cpuinfo
In Anbetracht Ihres spezifischen Beispielcodeausschnitts, der Informationen über verfügbare CPU-Kerne ausgibt, z. B.
$ cat /proc/cpuinfo | awk '/^processor/{print $3}'
Unter Ausnutzung der Tatsache, dass die CPU-Kerne einen fortlaufende Nummer an ihnen befestigt und unter einer processor
Feld. Aufgrund der Tatsache, dass die Informationen über jeden einzelnen CPU-Kern in proc
Datei befindet sich in einer Liste, die nach processor
aufsteigend, können Sie einfach den letzten Eintrag dieser Folge nehmen und den numerischen Wert im Feld processor
Feld z.B.
$ cat /proc/cpuinfo | awk '/^processor/{print $3}' | tail -n 1
ANMERKUNG: Da
/proc/cpuinfo
enthält eine Anzahl von Einträgen, die der Anzahl der Cpus entspricht, eineprocessor
Der Anfangswert des Feldes ist 0, vergessen Sie nicht, den Wert des letzten Prozessorkerns um 1 zu erhöhen.
$ last_cpu_core_id=$(/proc/cpuinfo | awk '/^processor/{print $3}' | tail -n 1)
$ echo $((last_cpu_core_id + 1))
Dieser Ansatz unterscheidet sich von dem ersten insofern, als wir uns nicht wirklich um einen bestimmten Wert der CPU-Kern-ID kümmern, sondern nur die Ausgabezeilen zählen. Bei der Zählung beginnt der Prozess normalerweise bei 1, was unsere Lösung vereinfacht.
grep
$ cat /proc/cpuinfo | grep processor | wc -l
Alternativ dazu sollten wir uns nicht unbedingt an die processor
Feld an sich, sondern nutzt die Tatsache, dass jeder Eintrag, der die Details eines einzelnen Prozessorkerns beschreibt, durch einen Zeilenumbruch getrennt ist, z. B.
cat /proc/cpuinfo | grep -v '^\w' | wc -l
awk
cat /proc/cpuinfo | awk '($1 == "processor") {count++ } END { print count }'
Nicht meine Webseite, sondern dieser Befehl von http://www.ixbrian.com/blog/?p=64&cm_mc_uid=89402252817914508279022&cm_mc_sid_50200000=1450827902 funktioniert bei mir unter Centos einwandfrei. Es zeigt tatsächliche cpus, auch wenn Hyperthreading aktiviert ist.
cat /proc/cpuinfo | egrep "core id|physical id" | tr -d "\n" | sed s/physical/\\nphysical/g | grep -v ^$ | sort | uniq | wc -l
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.
15 Stimmen
Das müssen Sie nicht
cat
antes deawk
trotzdem: einfachawk '<script>' /proc/cpuinfo
und so weiter:awk '/^processor/{n+=1}END{print n}' /proc/cpuinfo
. Und du kommst ohne "minus eins" rein.2 Stimmen
Um die Frage direkt zu beantworten, leiten Sie das nach
tail -n 1
der die letzte Zeile übernimmt und ausgibt.1 Stimmen
Siehe auch unix.stackexchange.com/q/564494/5132 .