110

次のコマンドを実行して、Linux のプロセッサ/コアの数を取得しています。

cat /proc/cpuinfo | grep processor | wc -l

機能しますが、エレガントに見えません。どのように改善することをお勧めしますか?

4

11 に答える 11

143

nprocあなたが探しているものです。

詳細はこちら: http://www.cyberciti.biz/faq/linux-get-number-of-cpus-core-command/

于 2013-10-27T15:12:17.183 に答える
100

最も単純なツールは glibc に付属しており、次のように呼ばれgetconfます。

$ getconf _NPROCESSORS_ONLN
4
于 2014-08-29T09:11:35.907 に答える
40

あなたが与える方法は、Linuxで最も移植性が高いと思います。cat不要なプロセスを生成する代わりにwc、少し短くすることができます。

$ grep --count ^processor /proc/cpuinfo
2
于 2013-10-27T15:40:06.957 に答える
14

新しいカーネルでは、/sys/devices/system/cpu/インターフェイスを使用してもう少し情報を取得することもできます。

$ ls /sys/devices/system/cpu/
cpu0  cpufreq  kernel_max  offline  possible  present  release
cpu1  cpuidle  modalias    online   power     probe    uevent
$ cat /sys/devices/system/cpu/kernel_max 
255
$ cat /sys/devices/system/cpu/offline 
2-63
$ cat /sys/devices/system/cpu/possible 
0-63
$ cat /sys/devices/system/cpu/present 
0-1
$ cat /sys/devices/system/cpu/online 
0-1

これらすべての意味の詳細については、公式ドキュメントを参照してください。

于 2013-10-27T21:10:58.737 に答える
1

OS に依存しない方法が必要な場合は、Windows と Linux で機能します。パイソンを使う

$ python -c 'import multiprocessing as m; print m.cpu_count()'
16
于 2016-07-27T13:26:15.377 に答える
1

これは、*bsd、*nix、または solaris (aix および hp-ux ではテストしていませんが、動作するはずです) で CPU コアをカウントする移植可能な方法が必要な人向けです。それはいつも私のために働いてきました。

dmesg | \
egrep 'cpu[. ]?[0-9]+' | \
sed 's/^.*\(cpu[. ]*[0-9]*\).*$/\1/g' | \
sort -u | \
wc -l | \
tr -d ' '

solaris grep&にはオプションegrepがないため、代わりに使用されます。-osed

于 2015-07-31T06:38:09.940 に答える
1

ハイパースレッドコアを数えない別のワンライナー:

lscpu | awk -F ":" '/Core/ { c=$2; }; /Socket/ { print c*$2 }' 
于 2015-10-30T09:27:47.120 に答える