您的位置:首页 > 运维架构 > Shell

获取CPU信息的shell脚本

2017-10-16 14:49 393 查看
#!/usr/bin/bash

#filename: cpu-info.sh

#this sctrpy only works in a Linux system which has one or more identical physical CPU(s).

#逻辑CPU个数

echo -n "logical CPU number in total: "

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

#有些系统没有多核也没有打开多线程, 直接退出

cat /proc/cpuinfo | grep -qi "core id"

if [ $? -ne 0 ]; then

echo "Warning: No multi-core or hyper-threading is enabled."

ecit 0;

fi

#物理CPU个数

echo -n "physical CPU number in total: "

cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l

#每个物理CPU上Core的个数(未计入超线程)

echo -n "core number in a physical CPU: "

core_per_phy_cpu=$(cat /proc/cpuinfo | grep "core id" | sort | uniq | wc -l)

echo $core_per_phy_cpu

#每个物理CPU中逻辑CPU(可能是core, threads 或both)的个数

echo -n "logical CPU number in a physical CPU: "

logical_cpu_per_phy_cpu=$(cat /proc/cpuinfo | grep "siblings" | sort | uniq | awk -F: '{print $2}')

echo $logical_cpu_per_phy_cpu

#是否打开有超线程

#如果在同一个物理CPU上有两个逻辑CPU具有相同的“core id”, 那么超线程是打开的

#此处根据前面计算的logical_cpu_per_phy_cpu和core_per_phy_cpu的比较来查看超线程

if [ $logical_cpu_per_phy_cpu -gt $core_per_phy_cpu ]; then

echo "Hyper threading is enabled."

elif [ $logical_cpu_per_phy_cpu -eq $core_per_phy_cpu ]; then

echo "Hyper threading is NOT enabled."

else

echo "Error. There's something wrong."

fi
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: