2

Huginで使用されるコマンドラインツールを使用してパノラマを生成するバッチスクリプトをまとめました。これらのツールのいくつかの興味深い点の1つは、マルチコアの使用を許可することですが、このオプションはコマンド内でフラグを立てる必要があります。

私がこれまでに思いついたもの:

#get the last fields of each line in the file, initialize the line counter
results=$(more /proc/cpuinfo | awk '{print ($NF)}')
count=0

#loop through the results till the 12th line for cpu core count
for result in $results; do
  if [ $count == 12 ]; then
    echo "Core Count: $result"
  fi
  count=$((count+1))
done

これを行うためのより簡単な方法はありますか?

4

6 に答える 6

2

head最初/最後の非常に多くの行を取得することについての質問に答えるには、 andを使用できますtail

cat /proc/cpuinfo | awk '{print ($NF)}' | head -12 | tail -1

しかし、12 行目を検索する代わりに、コアを含む行を意味的に検索するのはどうでしょうか。たとえば、一部のマシンには複数のコアがある場合があるため、結果を合計したい場合があります。

cat /proc/cpuinfo | grep "cores" | awk '{s+=$NF} END {print s}'
于 2012-06-27T14:18:55.507 に答える
2

result=$(awk 'NR==12{print $NF}' /proc/cpuinfo)

于 2012-06-27T14:17:14.623 に答える
2
count=$(getconf _NPROCESSORS_ONLN)

getconf(1)およびsysconf(3) の定数を参照してください。

Linux のマンページによると、_SC_NPROCESSORS_ONLN「標準ではない可能性があります」。私の推測では、これには特に glibc または Linux システムが必要です。それがうまくいかない場合は、おそらく/sys/class/cpuid(おそらくもっと良いものがありますか?) over parsingを調べます/proc/cpuinfo。上記のどれも完全に移植可能ではありません。

于 2012-06-27T14:29:52.507 に答える
1

多くの方法があります:

head -n 12 /proc/cpuinfo | tail -1 | awk -F: '{print $2}'
grep 'cpu cores' /proc/cpuinfo | head -1 | awk -F: '{print $2}'

等々。

ただし、 の最初のセクションからの情報のみを取得していることに注意/proc/cpuinfoする必要があります。それが必要なものであるかどうかはわかりません。

于 2012-06-27T14:18:50.613 に答える
0

そして、cpuinfo がそのフォーマットを変更した場合 ;) ? たぶん、このようなものが良くなるでしょう:

cat /proc/cpuinfo|sed -n 's/cpu cores\s\+:\s\+\(.*\)/\1/p'|tail -n 1

そして、必ずコアを合計してください。私はそれらの12または16のようなものを持っています;)

于 2012-06-27T14:27:28.563 に答える
0

あなたが何をしようとしているのか、なぜormaajが上で言ったことがうまくいかないのかわからない. あなたの説明に基づく私の本能は、次のようにはるかに単純でした.

grep processor /proc/cpuinfo  | wc -l
于 2012-06-27T16:29:58.903 に答える