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.
Sie können eine der folgenden Methoden verwenden, um die Anzahl der physisch CPU-Kerne.
Zählen Sie die Anzahl der eindeutigen Kernkennungen (entspricht in etwa grep -P '^core id\t' /proc/cpuinfo | sort -u | wc -l
).
awk '/^core id\t/ {cores[$NF]++} END {print length(cores)}' /proc/cpuinfo
Multiplizieren Sie die Anzahl der "Kerne pro Sockel" mit der Anzahl der Sockel.
lscpu | awk '/^Core\(s\) per socket:/ {cores=$NF}; /^Socket\(s\):/ {sockets=$NF}; END{print cores*sockets}'
Zählt die Anzahl der eindeutigen logischen CPUs, die vom Linux-Kernel verwendet werden. Die -p
Option erzeugt eine Ausgabe zum einfachen Parsen und ist kompatibel mit früheren Versionen von lscpu
.
lscpu -p | awk -F, '$0 !~ /^#/ {cores[$1]++} END {print length(cores)}'
Ich möchte nur wiederholen, was andere gesagt haben: Es gibt eine Reihe von verwandten Eigenschaften.
Zur Bestimmung der Anzahl der verfügbaren Prozessoren:
getconf _NPROCESSORS_ONLN
grep -cP '^processor\t' /proc/cpuinfo
Zur Bestimmung der Anzahl der verfügbaren Verarbeitungseinheiten (nicht unbedingt identisch mit der Anzahl der Kerne). Dies ist Hyperthreading-kompatibel.
nproc
Ich möchte nicht zu weit in die Tiefe gehen, aber Sie können die Anzahl der konfigurierten Prozessoren (im Gegensatz zu den einfach verfügbaren/online verfügbaren Prozessoren) auch ermitteln über getconf _NPROCESSORS_CONF
. Um die Gesamtzahl der CPUs (offline und online) zu bestimmen, müssen Sie die Ausgabe von lscpu -ap
.
Die obigen Antworten sind auf die meisten Situationen anwendbar, aber wenn Sie sich in einer Docker-Container-Umgebung befinden und Ihr Container durch CpusetCpus
dann kann man mit der obigen Methode nicht die tatsächlichen Prozessorkerne ermitteln .
In diesem Fall müssen Sie dies tun, um die tatsächlichen Prozessorkerne zu erhalten:
grep -c 'cpu[0-9]' /proc/stat
Für den Fall, dass sich jemand fragt, was die Python psutil.cpu_count(logical=False)
Aufruf unter Linux in einem entsprechenden Shell-Skript erfolgt:
cat /sys/devices/system/cpu/cpu[0-9]*/topology/core_cpus_list | sort -u | wc -l
Und hier ist eine etwas längere Version, die auf die Informationen aus der veralteten Version zurückgreift thread_geschwister_liste Datei, wenn core_cpus_list nicht verfügbar ist (psutil hat diesen Fallback):
cat /sys/devices/system/cpu/cpu[0-9]*/topology/{core_cpus_list,thread_siblings_list} | sort -u | 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 .