キー番号をスクリプトで使用したいのですが、番号自体を抽出するのが最善の方法は何ですか?
たとえば、以下に物理コアの数を抽出しますが、実際のコアの数をどのように抽出する必要があるかを他の場所に入力として使用できますか?
lscpu | grep "Core(s) per socket"
Core(s) per socket: 4
tail -c Nについて知っていますが、より多くのコアを持つシステムで作業している場合、このアプローチが脆弱になる可能性があることが心配です。
他の場所で入力パラメータとして使用する物理コア数とコアあたりのスレッド数を確実に取得する最良の方法は何ですか?
答え1
行から数字を選択するには、Perl正規表現をawk
使用できますsed
。grep
$ lscpu | sed -n 's/^Core(s) per socket: *//p'
2
しかし、その番号が欲しいですか?ソケットのコア数は何ですか?コンピュータに複数のソケットがある場合の対処方法:
$ lscpu |grep -i socket
Core(s) per socket: 2
Socket(s): 2
これを使用してawk
2つの数字を取り、乗算することができます。
$ lscpu | awk '/^Core.s. per socket:/ {cores=$NF} /^Socket.s.:/ {sockets=$NF} END {print cores * sockets}'
4
これがハイパースレッディングと見なされるか、ハイパースレッディングが必要かはわかりませんが、数値を直接取得できますCPU(s)
。
lscpu | awk '/^CPU.s.:/ { print $NF; exit }'
または使用nproc
システムのCPUの総数を取得します。
$ nproc --all
4
答え2
getconf
これにはユーティリティを使用できます。これはあなたに役立ちます
$ getconf _NPROCESSORS_ONLN
8