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.
Hier ist die Methode, die ich verwende, um die Anzahl der physischen Kerne zu zählen, die unter Linux online sind:
lscpu --online --parse=Core,Socket | grep --invert-match '^#' | sort --unique | wc --lines
oder kurz gesagt:
lscpu -b -p=Core,Socket | grep -v '^#' | sort -u | wc -l
Beispiel (1 Steckdose):
> lscpu
...
CPU(s): 28
Thread(s) per core: 2
Core(s) per socket: 14
Socket(s): 1
....
> lscpu -b -p=Core,Socket | grep -v '^#' | sort -u | wc -l
14
Beispiel (2 Steckdosen):
> lscpu
...
CPU(s): 56
Thread(s) per core: 2
Core(s) per socket: 14
Socket(s): 2
...
> lscpu -b -p=Core,Socket | grep -v '^#' | sort -u | wc -l
28
Beispiel (4 Steckdosen):
> lscpu
...
CPU(s): 64
Thread(s) per core: 2
Core(s) per socket: 8
Socket(s): 4
...
> lscpu -b -p=Core,Socket | grep -v '^#' | sort -u | wc -l
32
Für die Gesamtzahl der physischen Kerne:
grep '^core id' /proc/cpuinfo |sort -u|wc -l
Auf Maschinen mit mehreren Sockeln (oder immer) multiplizieren Sie das obige Ergebnis mit der Anzahl der Sockel:
echo $(($(grep "^physical id" /proc/cpuinfo | awk '{print $4}' | sort -un | tail -1)+1))
@mklement0 hat unten eine sehr schöne Antwort mit lscpu. Ich habe eine prägnantere Version in den Kommentaren geschrieben
Die Verwendung von getconf ist in der Tat der portabelste Weg, allerdings hat die Variable in BSD und Linux andere Namen als getconf, so dass man beide testen muss, wie dieser Gist vorschlägt: https://gist.github.com/jj1bdx/5746298 (enthält auch eine Solaris-Korrektur mit ksh)
Ich persönlich benutze:
$ getconf _NPROCESSORS_ONLN 2>/dev/null || getconf NPROCESSORS_ONLN 2>/dev/null || echo 1
Und wenn Sie dies in Python wollen, können Sie einfach den Syscall verwenden, den getconf verwendet, indem Sie das os-Modul importieren:
$ python -c 'import os; print os.sysconf(os.sysconf_names["SC_NPROCESSORS_ONLN"]);'
In Bezug auf nproc
Es ist Teil der GNU Coreutils, also nicht standardmäßig in BSD verfügbar. Es verwendet sysconf() auch nach einigen anderen Methoden.
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 .