>Если я буду для этого брать инфу из 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)}'