#!/bin/sh ######################################## # Description: This script is used to get cpu information on x86 and x64 systems. ######################################## ######################### # Set variables ######################### PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin cpuinfo_file=/proc/cpuinfo ######################### # Main ######################### cpu_model=`grep '^model name' $cpuinfo_file | uniq | cut -d : -f 2` model=`echo $cpu_model` echo $cpu_model | grep Hz > /dev/null 2>&1 if [ $? -eq 1 ] then dmidecode -V > /dev/null 2>&1 if [ $? -eq 0 ] then dmidecode | grep 'No SMBIOS nor DMI' > /dev/null 2>&1 if [ $? -eq 1 ] then cpuspeed=`dmidecode -t 4 | sed -r 's/^[[:space:]]+//' | grep '^Current Speed:' | uniq | awk '{print $3}'` if [ $cpuspeed -lt 1000 ] then cpuspeed_pretty=`echo $cpuspeed'MHz'` else cpuspeed_ghz=$(echo "scale=2; $cpuspeed / 1000" | bc) cpuspeed_pretty=`echo $cpuspeed_ghz'GHz'` fi fi else cpuspeed_pretty=Unknown fi cpu_model=`echo $model @ $cpuspeed_pretty` fi grep '^physical id' $cpuinfo_file > /dev/null 2>&1 if [ $? -eq 0 ] then physical_cpus=`grep '^physical id' $cpuinfo_file | sort | uniq | wc -l` else physical_cpus=1 fi logical_cpus=`grep '^processor' $cpuinfo_file | uniq | wc -l` threads_per_cpu=$(($logical_cpus / $physical_cpus)) grep '^cpu cores' $cpuinfo_file > /dev/null 2>&1 if [ $? -eq 0 ] then cores_per_cpu=`grep '^cpu cores' $cpuinfo_file | sort | uniq | cut -d : -f 2` else cores_per_cpu=1 fi if [ "$threads_per_cpu" -gt "$cores_per_cpu" ] then hyper_threading="Yes" else hyper_threading="No" fi echo Model: $cpu_model echo Hyper-Threading: $hyper_threading echo Physical CPU\'s: $physical_cpus echo Cores per CPU: $cores_per_cpu echo Threads per CPU: $threads_per_cpu echo Logical CPU\'s: $logical_cpus exit 0