次のコマンドを実行して、Linux のプロセッサ/コアの数を取得しています。
cat /proc/cpuinfo | grep processor | wc -l
機能しますが、エレガントに見えません。どのように改善することをお勧めしますか?
次のコマンドを実行して、Linux のプロセッサ/コアの数を取得しています。
cat /proc/cpuinfo | grep processor | wc -l
機能しますが、エレガントに見えません。どのように改善することをお勧めしますか?
nproc
あなたが探しているものです。
詳細はこちら: http://www.cyberciti.biz/faq/linux-get-number-of-cpus-core-command/
最も単純なツールは glibc に付属しており、次のように呼ばれgetconf
ます。
$ getconf _NPROCESSORS_ONLN
4
あなたが与える方法は、Linuxで最も移植性が高いと思います。cat
不要なプロセスを生成する代わりにwc
、少し短くすることができます。
$ grep --count ^processor /proc/cpuinfo
2
新しいカーネルでは、/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
これらすべての意味の詳細については、公式ドキュメントを参照してください。
OS に依存しない方法が必要な場合は、Windows と Linux で機能します。パイソンを使う
$ python -c 'import multiprocessing as m; print m.cpu_count()'
16
これは、*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
がないため、代わりに使用されます。-o
sed
ハイパースレッドコアを数えない別のワンライナー:
lscpu | awk -F ":" '/Core/ { c=$2; }; /Socket/ { print c*$2 }'