Если я буду для этого брать инфу из top то в этот момент ведь будет выполнятся мой скрипт и он как раз нагрузит процессор, а мне раз я беру статистику через каждую минуту как то бы взять надо среднюю нагрузку процессора за последнюю минуту. Это реально??? Кто вообще как строит графики загруженности процессора?P.S. никто не поделится как выдрать из top из
CPU states: 58,9% user, 40,0% system, 0,0% nice, 1,0% idle
число 1,0??? А то ведь можно это знаю стандартные програмки Linux, а то я на перле столько коду замучу, когда можно одной строчкой ...
>Если я буду для этого брать инфу из top то в этот
>момент ведь будет выполнятся мой скрипт и он как раз нагрузит
>процессор, а мне раз я беру статистику через каждую минуту как
>то бы взять надо среднюю нагрузку процессора за последнюю минуту. Это1. Я думаю, что top не слишком предназначен для снятия этой статистики в скрипте, хотя я могу и ошибаться.
2. Нагрузкой на процессор я бы принебрёг.>реально??? Кто вообще как строит графики загруженности процессора?
>P.S. никто не поделится как выдрать из top из
>CPU states: 58,9% user, 40,0% system, 0,0% nice, 1,0% idle
man grep
man awk
>
>число 1,0??? А то ведь можно это знаю стандартные програмки Linux, а
>то я на перле столько коду замучу, когда можно одной строчкой
>...
Вот как это делаю я (для freebsd - возможно для linux придётся подправить):
1. Для снятия средних значений с момента включения компьютера
#!/bin/sh
echo `/usr/sbin/iostat|/usr/bin/tail +3`|/usr/bin/awk '{printf("%d\n%d\n\nidle/user cpu \%\n",$16,$12+$13)}'#!/bin/sh
echo `/usr/sbin/iostat|/usr/bin/tail +3`|/usr/bin/awk '{printf("%d\n%d\n\nsystem/interrupt cpu \%\n",$14,$15)}'2. Для снятия текущих значений (сорри, не очень красиво):
В этом случае /usr/sbin/iostat -c 11 выводит 11 строк (за 11 секунд). Первая - среднее значение с момента включения (его пропускаем), из оставшихся десяти находим среднее арифметическое (т.е. средние значения за 10 секунд).
#!/bin/sh
echo `/usr/sbin/iostat -c 11|/usr/bin/tail +4|/usr/bin/awk '{print $16,$12,$13}'`|awk '{printf("%d\n%d\n\nidle/user cpu \%\n",($1+$4+$7+$10+$13+$16+$19+$22+$25+$28)/10,($2+$3+$5+$6+$8+$9+$11+$12+$14+$15+$17+$18+$20+$21+$23+$24+$26+$27+$29+$30)/10)}'#!/bin/sh
echo `/usr/sbin/iostat -c 11|/usr/bin/tail +4|/usr/bin/awk '{print $14,$15}'`|awk '{printf("%d\n%d\n\nsystem/interrupt cpu \%\n",($1+$3+$5+$7+$9+$11+$13+$15+$17+$19)/10,($2+$4+$6+$8+$10+$12+$14+$16+$18+$20)/10)}'
>>P.S. никто не поделится как выдрать из top из
>>CPU states: 58,9% user, 40,0% system, 0,0% nice, 1,0% idle
>>число 1,0??? А то ведь можно это знаю стандартные програмки Linux, а
сорри.
echo "CPU states: 58,9% user, 40,0% system, 0,0% nice, 1,0% idle"|awk '{printf("%d\n",$9)}'
спасибо большое, iostat кажется самый лучший выход, для линухи чуть чуть изменённый твой скрипт выглядит так:
/bin/echo `/usr/bin/iostat -c 1 5|/usr/bin/tail +5`|/bin/awk '{printf("0\n%d\n0\n0\n",(400-$9-$18-$27-$36)/4)}'
>спасибо большое, iostat кажется самый лучший выход, для линухи чуть чуть изменённый
>твой скрипт выглядит так:
>/bin/echo `/usr/bin/iostat -c 1 5|/usr/bin/tail +5`|/bin/awk '{printf("0\n%d\n0\n0\n",(400-$9-$18-$27-$36)/4)}'
А не проще настроить nagios?