Small shell script that returns the details in /proc/cpuinfo in a more human readable and relevant way.
Sample output
Processor seems to be quite old guessing number. ####################################### # CPU Information # ####################################### CPU Architecture is: x86_64 CPU Manufacturer is: AMD CPU Model is: AMD Opteron(tm) Processor 252 CPU Speed is: 1800 1800MHz Number of physical CPUs: 2 Number of cores per CPU: 1 Number of logical CPUs (cores & hyperthreading): 2 Hyperthreading enabled (Intel only): N/A #######################################
#!/bin/bash # # CPUInfo.sh # Copyright 2009 Ryan McLean ryan1_00 !at_NoSPAM hotmail -com # GPL v2 or later # Functions # function getArch() { case `uname -p` in "i686") eval "$1=x86"; ;; *) eval "$1='`uname -p`'"; ;; esac } function getMake() { # Who Makes it (AMD | INTEL) if [ `grep -c -i vendor_id /proc/cpuinfo` -gt 0 ]; then tmp=`grep -i vendor_id /proc/cpuinfo | cut -f2 -d":"`; elif [ `grep -c -i vendor /proc/cpuinfo` -gt 0 ]; then tmp=`grep -i vendor /proc/cpuinfo | cut -f2 -d":"`; fi tmp=`echo $tmp | sed 's/\n/ /g' | cut -f1 -d" "`; if [ `echo $tmp | grep -c AMD` -eq 1 ]; then eval "$1=AMD"; elif [ `echo $tmp | grep -c Intel` -eq 1 ]; then eval "$1=Intel"; else eval "$1=Unknown"; fi } function getModel() { # What is is (Athlon | Pentium) if [ `grep -c "model name" /proc/cpuinfo` -gt 0 ]; then tmp=`grep -i "model name" /proc/cpuinfo | cut -f1,2 -d":"`; eval "$1='`echo $tmp | sed 's/\n/ /g' | cut -f2 -d":" | sed 's/model name/ /g'`'"; elif [ `grep -c "family" /proc/cpuinfo` -gt 0 ]; then tmp=`grep -i "family" /proc/cpuinfo | cut -f1,2 -d":"`; eval "$1='`echo $tmp | sed 's/\n/ /g' | cut -f2 -d":" | sed 's/family/ /g'`'"; else eval "$1=Unknown"; fi } function getCPU() { if [ `grep -c "cpu cores" /proc/cpuinfo` -gt 0 ]; then # Get number of cores (assumes that multiprocessor computers # have same number of cores on each CPU) tmp=`grep -i "cpu cores" /proc/cpuinfo | cut -f2 -d":" | sed 's/ //g'`; tmp=`echo $tmp | sed 's/ //g'`; eval "$2=`echo ${tmp:0:1}`"; # count number of Physical & logical CPUs tmp=`grep -i "physical id" /proc/cpuinfo | cut -f2 -d":" | sed 's/ //g'`; tmp=`echo $tmp | sed 's/ //g'`; x=0; while [ $x -lt ${#tmp} ] do curID=`echo ${tmp:$x:1}`; tmp3[$curID]=`expr ${tmp3[$curID]} + 1`; x=`expr $x + 1`; done eval "$1=`echo ${#tmp3[*]}`"; elif [ `grep -c "cpu number" /proc/cpuinfo` -gt 0 ]; then # count number of Physical & logical CPUs tmp=`grep -i "cpu number" /proc/cpuinfo | cut -f2 -d":" | sed 's/ //g'`; tmp=`echo $tmp | sed 's/ //g'`; x=0; while [ $x -lt ${#tmp} ] do curID=`echo ${tmp:$x:1}`; tmp2[$curID]=`expr ${tmp2[$curID]} + 1`; x=`expr $x + 1`; done eval "$1=`echo ${#tmp2[*]}`"; eval "$2=1"; else echo " Processor seems to be quite old guessing number."; tmp=`grep processor /proc/cpuinfo | cut -f2 -d":" | sed 's/ //g'`; tmp=`echo $tmp | sed 's/ //g'`; if [ $ht == "true" ]; then tmp=`expr ${#tmp} '%' 2`; eval "$1=`echo $tmp`"; else eval "$1=`echo ${#tmp}`"; fi eval "$2=1"; fi } function getMHZ() { eval "$1='`grep 'cpu MHz' /proc/cpuinfo | cut -f2 -d':' | cut -f1 -d'.'`'"; } function getHT() { if [ $CPUmak == "Intel" ]; then if [ `grep flags /proc/cpuinfo | grep -c " ht "` -gt 0 ]; then eval "$1=true"; else eval "$1=false"; fi elif [ $CPUmak == "AMD" ]; then eval "$1=N/A"; else eval "$1=Unknown"; fi } function getLogCPU() { if [ $ht == "true" ]; then eval "$1=`expr $phyCPU '*' $cores '*' 2`"; else eval "$1=`expr $phyCPU '*' $cores`"; fi } function output() { echo "#######################################"; echo "# CPU Information #"; echo "#######################################"; echo ""; echo " CPU Architecture is: $arch"; echo " CPU Manufacturer is: $CPUmak"; echo " CPU Model is: $CPUmod"; echo " CPU Speed is: "$CPUSpeed"MHz"; echo " Number of physical CPUs: $phyCPU"; echo " Number of cores per CPU: $cores"; echo " Number of logical CPUs (cores & hyperthreading): $logCPU"; echo " Hyperthreading enabled (Intel only): $ht"; echo ""; echo "#######################################"; } # Set Vars # arch="Unknown"; CPUmak="Unknown"; CPUmod="Unknown"; CPUSpeed="Unknown"; phyCPU=0; cores=0; logCPU=0; ht="Unknown"; # Main # clear; getArch arch getMake CPUmak getModel CPUmod getMHZ CPUSpeed getHT ht CPUmak getCPU phyCPU cores ht getLogCPU logCPU phyCPU cores ht output arch CPUmak CPUmod CPUSpeed phyCPU cores logCPU ht
Good stuff I try to add also meminfo in it but no luck sofar, Thanks for creating this, makes live lot easier