2016-10-28 3 views
0

Fondamentalement, je voudrais savoir un bon moyen d'afficher des informations telles que les fréquences CPU, de manière agréable et facile. Je ne connais pas un bon programme pour Linux qui le montre comme je le veux. J'ai donc décidé d'écrire un script. Mais il semble même que ce n'est pas si facile (mon savoir bash n'est pas très bon).Obtenir des fréquences de processeur

Donc je voudrais obtenir une sortie comme:

Core 1: 800 MHz, Temp: 30 C 
Core 2: 1500 MHz, Temp: ... 
... 

pour la première étape, le MHz serait suffisant.

Comment procéder de la manière la plus simple?

Ce que je jusqu'à présent:

CpuInfoOutput="$(cat /proc/cpuinfo)" 
ProcessorCount="$(echo "${CpuInfoOutput}" | grep processor | tail -1 | grep -o ":.*" | cut -f2- -d: | xargs)" 

ProcessorCount=$(expr $ProcessorCount + 1) 

echo "CPU Count: ${ProcessorCount}" 

for i in $(seq $ProcessorCount) 
do 
    $ProcessorId = $(expr $i - 1) 

    TODO 

    echo ${CpuInfoOutput} | grep processor | 
done 

sortie de cat/proc/cpuinfo

processor : 0 
vendor_id : AuthenticAMD 
cpu family : 16 
model  : 4 
model name : AMD Phenom(tm) II X4 965 Processor 
stepping : 3 
microcode : 0x10000c8 
cpu MHz  : 800.000 
cache size : 512 KB 
physical id : 0 
siblings : 4 
core id  : 0 
cpu cores : 4 
apicid  : 0 
initial apicid : 0 
fpu  : yes 
fpu_exception : yes 
cpuid level : 5 
wp  : yes 
flags  : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm 3dnowext 3dnow constant_tsc rep_good nopl nonstop_tsc extd_apicid pni monitor cx16 popcnt lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt hw_pstate vmmcall npt lbrv svm_lock nrip_save 
bugs  : tlb_mmatch apic_c1e fxsave_leak sysret_ss_attrs 
bogomips : 6837.89 
TLB size : 1024 4K pages 
clflush size : 64 
cache_alignment : 64 
address sizes : 48 bits physical, 48 bits virtual 
power management: ts ttp tm stc 100mhzsteps hwpstate 

processor : 1 
vendor_id : AuthenticAMD 
cpu family : 16 
model  : 4 
model name : AMD Phenom(tm) II X4 965 Processor 
stepping : 3 
microcode : 0x10000c8 
cpu MHz  : 2200.000 
cache size : 512 KB 
physical id : 0 
siblings : 4 
core id  : 1 
cpu cores : 4 
apicid  : 1 
initial apicid : 1 
fpu  : yes 
fpu_exception : yes 
cpuid level : 5 
wp  : yes 
flags  : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm 3dnowext 3dnow constant_tsc rep_good nopl nonstop_tsc extd_apicid pni monitor cx16 popcnt lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt hw_pstate vmmcall npt lbrv svm_lock nrip_save 
bugs  : tlb_mmatch apic_c1e fxsave_leak sysret_ss_attrs 
bogomips : 6837.89 
TLB size : 1024 4K pages 
clflush size : 64 
cache_alignment : 64 
address sizes : 48 bits physical, 48 bits virtual 
power management: ts ttp tm stc 100mhzsteps hwpstate 

processor : 2 
vendor_id : AuthenticAMD 
cpu family : 16 
model  : 4 
model name : AMD Phenom(tm) II X4 965 Processor 
stepping : 3 
microcode : 0x10000c8 
cpu MHz  : 800.000 
cache size : 512 KB 
physical id : 0 
siblings : 4 
core id  : 2 
cpu cores : 4 
apicid  : 2 
initial apicid : 2 
fpu  : yes 
fpu_exception : yes 
cpuid level : 5 
wp  : yes 
flags  : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm 3dnowext 3dnow constant_tsc rep_good nopl nonstop_tsc extd_apicid pni monitor cx16 popcnt lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt hw_pstate vmmcall npt lbrv svm_lock nrip_save 
bugs  : tlb_mmatch apic_c1e fxsave_leak sysret_ss_attrs 
bogomips : 6837.89 
TLB size : 1024 4K pages 
clflush size : 64 
cache_alignment : 64 
address sizes : 48 bits physical, 48 bits virtual 
power management: ts ttp tm stc 100mhzsteps hwpstate 

processor : 3 
vendor_id : AuthenticAMD 
cpu family : 16 
model  : 4 
model name : AMD Phenom(tm) II X4 965 Processor 
stepping : 3 
microcode : 0x10000c8 
cpu MHz  : 2200.000 
cache size : 512 KB 
physical id : 0 
siblings : 4 
core id  : 3 
cpu cores : 4 
apicid  : 3 
initial apicid : 3 
fpu  : yes 
fpu_exception : yes 
cpuid level : 5 
wp  : yes 
flags  : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm 3dnowext 3dnow constant_tsc rep_good nopl nonstop_tsc extd_apicid pni monitor cx16 popcnt lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt hw_pstate vmmcall npt lbrv svm_lock nrip_save 
bugs  : tlb_mmatch apic_c1e fxsave_leak sysret_ss_attrs 
bogomips : 6837.89 
TLB size : 1024 4K pages 
clflush size : 64 
cache_alignment : 64 
address sizes : 48 bits physical, 48 bits virtual 
power management: ts ttp tm stc 100mhzsteps hwpstate 

EDIT: Ma solution pour l'instant:

#! 

# print processor MHz values 
awk -F":" '$1~"processor"{processor=$2+1} $1~"cpu MHz"{print "Processor " processor ":\t" $2 " MHz"}' /proc/cpuinfo 

# print GPU clock value 
GPU_FREQ=$(awk -F":" '$1~"current engine" {print $2}' /sys/kernel/debug/dri/64/radeon_pm_info) 
echo -e "Graphics card:\t$GPU_FREQ" 

# print temperatures 

CPU_TEMP=$(cat /sys/class/hwmon/hwmon1/device/temp2_input) 
GFX_TEMP=$(cat /sys/class/graphics/fb0/device/hwmon/hwmon0/temp1_input) 


echo 
echo -e "CPU temp:\t$(expr $CPU_TEMP/1000)" °C 
echo -e "Graphics temp:\t$(expr $GFX_TEMP/1000)" °C 

Exemple de sortie

Processor 1:  800.000 MHz 
Processor 2:  800.000 MHz 
Processor 3:  800.000 MHz 
Processor 4:  800.000 MHz 
Graphics card: 675000 kHz 

CPU temp: 35 °C 
Graphics temp: 46 °C 

Actuellement vraiment pas sympa la façon dont je lis la fréquence du GPU. Mais je n'ai pas trouvé d'autre solution pour utiliser la chose de débogage de Linux. Je vais donc besoin d'un accès root pour le script ...

+1

vous pourriez [modifier] votre question montrant le résultat brut de 'cpuinfo' Les utilisateurs de Windows pourraient donc aussi essayer de répondre. –

+0

Grande question est, si cpuinfo est le chemin à parcourir ... mais fera – SACO

+1

Existe-t-il une exigence stricte exigeant que ce soit un script bash? Par exemple. un module google trouve rapidement [this] (https://pypi.python.org/pypi/py-cpuinfo) python qui pourrait vous permettre de faire ce que vous voulez en quelques lignes. –

Répondre

2

Je pense que vous trouverez awk une meilleure solution pour cela:

awk -F":" '$1~"processor"{processor=$2+1} $1~"cpu MHz"{print "Processor #" processor " is running at " $2 "mhz"}' /proc/cpuinfo 

awk se scinde ici la sortie de /proc/cpuinfo par deux points :. S'il trouve le mot "processeur" dans le premier champ, il stocke la valeur du second champ $2 dans la variable processor. Si elle trouve les mots « MHz` cpu dans le premier champ plus tard, il imprime ensuite le processeur de la variable ainsi que la vitesse

Sur mon système.

$ awk -F":" '$1~"processor"{processor=$2+1} $1~"cpu MHz"{print "Processor #" processor " is running at " $2 "mhz"}' /proc/cpuinfo 
Processor #1 is running at 2794.500mhz 
Processor #2 is running at 1354.500mhz 
+0

Parfait! Je vous remercie. – SACO

0

Vous pouvez essayer ce qui suit féliciter

grep -w 'processor\|MHz' /proc/cpuinfo | sed 'N;s/\n/,/;s/[\t|:]//g' 

Dans mon système, il imprime comme

processor 0,cpu MHz 2593.993 
processor 1,cpu MHz 2593.993 
processor 2,cpu MHz 2593.993 
processor 3,cpu MHz 2593.993