The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Не могу понять, как сделать..."
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Не могу понять, как сделать..."
Сообщение от alexeylomov Искать по авторуВ закладки(ok) on 02-Авг-04, 18:18  (MSK)
Здравствуйте.
Подскажите, пожалуйста, как быть.
Есть скрипт, при помощи которого вызываю
ps axo "%cpu command" | grep httpd
Получаю что-то вроде
0.0 /usr/sbin/httpd
0.0 /usr/sbin/httpd
0.6 /usr/sbin/httpd
0.0 /usr/sbin/httpd
0.1 /usr/sbin/httpd
0.0 /usr/sbin/httpd
0.0 perl cpu_using.pl httpd
0.0 sh -c ps axo "%cpu command" | grep httpd
0.0 grep httpd
Затем нужно вывести, сколько всего % использует httpd.
Выражение типа =~ /([0-9,.]+)\s/ естественно выводит только первое значение 0.0
Никак не могу придумать, как вывести сумму всех значений.
Подскажите как осуществить задуманное?
  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "Не могу понять, как сделать..."
Сообщение от ihor Искать по авторуВ закладки on 03-Авг-04, 09:54  (MSK)
#!/usr/local/bin/perl -w
use strict;
my ($str, $total, $cnt);

open(PS, 'ps -axo "%cpu command"|grep httpd|') || die "Can't open ps: $!";
$total = 0;
$cnt = 0;
while (defined ($str = <PS>)) {
  if ($str =~ /^\s*([0-9\.\,]+)\s+.+\/httpd/) {
    $total += $1;
    $cnt++;
  } # if
} # while
close(PS);
print "number of processes: $cnt; total percentage: $total\n";

  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "Не могу понять, как сделать..."
Сообщение от alexeylomov Искать по авторуВ закладки(ok) on 03-Авг-04, 12:44  (MSK)
Тройное спасибо! :)
Почему тройное?
Уже как минимум третий раз пищу сюда вопрос на тему Perl'а
и всё время мне помогаешь именно ты :)
  Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "Что-то не так."
Сообщение от alexeylomov Искать по авторуВ закладки(ok) on 03-Авг-04, 13:47  (MSK)
Я удалил это сообщение.
  Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "Что-то не так."
Сообщение от ihor Искать по авторуВ закладки on 03-Авг-04, 13:58  (MSK)
да нет, у меня работает правильно.
попробуй вставить
  print "$1\n";
перед
  $total += $1;
что будет?
  Рекомендовать в FAQ | Cообщить модератору | Наверх

5. "Что-то не так."
Сообщение от alexeylomov Искать по авторуВ закладки(ok) on 03-Авг-04, 14:01  (MSK)
>да нет, у меня работает правильно.
>попробуй вставить
>  print "$1\n";
>перед
>  $total += $1;
>что будет?


Просто я немного переделал скрипт, чтобы можно было менять имя проверяемого процесса из командной строки, и поэтому работает не для всех имён.  А, вообще, оно работает :)

  Рекомендовать в FAQ | Cообщить модератору | Наверх

6. "Всё ок."
Сообщение от alexeylomov Искать по авторуВ закладки(ok) on 03-Авг-04, 14:19  (MSK)
Даже не так.
Он работает для всех имён, просто,видимо в момент запуска скрипта был ноль, а когда ручками запускал, немного прибавилось.
В общем, если запустить 3-5 раз, то он показывает то, что надо.
  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру