我已经整理了一个批处理脚本,使用Hugin使用的命令行工具生成全景图。其中一些工具的一个有趣之处在于它们允许多核使用,但必须在命令中标记此选项。
到目前为止我想出了什么:
#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
有更简单的方法吗?
答案 0 :(得分:2)
result=$(awk 'NR==12{print $NF}' /proc/cpuinfo)
答案 1 :(得分:2)
要回答关于获取第一个/最后一个这么多行的问题,您可以使用head
和tail
,例如。 :
cat /proc/cpuinfo | awk '{print ($NF)}' | head -12 | tail -1
但是,不是搜索第12行,而是在语义上搜索包含核心的任何行。例如,某些计算机可能有多个核心,因此您可能需要对结果求和:
cat /proc/cpuinfo | grep "cores" | awk '{s+=$NF} END {print s}'
答案 2 :(得分:2)
count=$(getconf _NPROCESSORS_ONLN)
请参阅getconf(1)和sysconf(3) constants。
根据Linux联机帮助页,_SC_NPROCESSORS_ONLN
“可能不是标准”。我的猜测是这需要glibc甚至Linux系统。如果这不起作用,我可能会在解析/sys/class/cpuid
时考虑/proc/cpuinfo
(也许有更好的东西?)。以上都不是完全便携的。
答案 3 :(得分: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
第一部分中的信息,我不确定这是您所需要的。
答案 4 :(得分:0)
如果cpuinfo改变其格式;)?也许这样的事情会更好:
cat /proc/cpuinfo|sed -n 's/cpu cores\s\+:\s\+\(.*\)/\1/p'|tail -n 1
确保核心总和。我的有12或16个;)
答案 5 :(得分:0)
不确定你要做什么以及为什么ormaaj上面所说的也不会起作用。根据你的描述,我的直觉会更加简单。
grep processor /proc/cpuinfo | wc -l