2016-10-28 4 views
0

В принципе, я хотел бы, чтобы хороший способ отображать информацию, такую ​​как частоты процессора и т. Д., Легко и просто. Я не знаю хорошей программы для Linux, которая показывает это так, как я хочу. Поэтому я решил написать сценарий. Но, кажется, даже это не так просто (мое знание о битхе не очень хорошо).Получить частоты процессора

Так я хотел бы получить выход как:

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

для первого шага МГц будет достаточно.

Как это сделать проще всего?

Что у меня до сих пор:

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 

Выход кошки/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: Мое решение на данный момент:

#! 

# 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 

Пример вывода

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 

В настоящее время действительно не очень хорошо, как я читаю частоту GPU. Но я не нашел другого решения, чтобы использовать отладочную вещь из Linux. Так я нужен доступ корня для сценария ...

+1

вы могли бы [править] ваш вопрос показывает сырой вывод 'cpuinfo' поэтому пользователи Windows также могут попытаться ответить. –

+0

Большой вопрос: если cpuinfo - это способ пойти ... но будет делать – SACO

+1

Есть ли какое-то строгое требование, требующее, чтобы это был сценарий bash? Например. быстрый google находит [this] (https://pypi.python.org/pypi/py-cpuinfo) модуль python, который, вероятно, позволит вам делать то, что вы хотите, в нескольких строках. –

ответ

2

Я думаю, что вы найдете awk лучшее решение для этого:

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

AWK здесь раскалывается выход из /proc/cpuinfo двоеточием :. Если он найдет слово «процессор» в первом поле, он сохранит значение второго поля $2 в переменной processor. Если он находит слова «центральный процессор MHz` в первом поле позже она затем выводит процессор из переменных, а также скоростей

На моей системе:.

$ 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

Отлично! Спасибо. – SACO

0

Вы можете попробовать следующее воздаем

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

В моей системе, распечатать, как

processor 0,cpu MHz 2593.993 
processor 1,cpu MHz 2593.993 
processor 2,cpu MHz 2593.993 
processor 3,cpu MHz 2593.993 
Смежные вопросы