![]() |
Модераторы: ginnie, korob2001 |
![]() ![]() ![]() |
|
FishHunter |
|
|||
Новичок Профиль Группа: Участник Сообщений: 47 Регистрация: 12.2.2009 Репутация: нет Всего: нет |
Добрый вечер,
Прошу совета общественности как решить следующую задачу: На серваке запущено практически постоянно n-ое число процессов (назовем их wokers.pl). Некоторые из них "подвисают" и начинают хавать трафф, что не желательно. Я устал вручную тереть подвисшие процессы (смотрю top и у которых TIME+ больше чем мне надо тех убиваю, знаю извращение ![]() ЗЫ Т.е. известно имена процессов, надо убивать те, TIME+ которых больше заданной мной величины. ЗЫЫ Менять что-то в скриптах, которые рождают эти процессы нет никакого желания ![]() |
|||
|
||||
amg |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1145 Регистрация: 3.8.2006 Где: Новосибирск Репутация: 9 Всего: 50 |
Собственно, алгоритм действий Вы вполне исчерпывающе описали, остается только пересказать его на языке Perl
![]()
|
|||
|
||||
FishHunter |
|
|||
Новичок Профиль Группа: Участник Сообщений: 47 Регистрация: 12.2.2009 Репутация: нет Всего: нет |
сенькю вери мач
![]() |
|||
|
||||
aksined |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 26.12.2005 Репутация: 1 Всего: 1 |
Есть несколько предложений Одна и та же строка обрабатывается четыре раза. Причём два раза - абсолютно идентичным сплитом. В случае со списком процессов - это не имеет значения. А гигабайтные файлы лучше обрабатывать по-другому.
Мне кажется, что лучше всё это хозяйство реализовать по-другому. Во-первых, можно заметить по моему примеру, что длинные имена процессов порезались. Во-вторых, если есть модуль, я правда не нашел, лучше пользоваться им. В-третьих, вообще есть другая команда ps -eo pid,time,cmd её вывод вообще распарсится вот так ($pid, $time, $cmd) = split / /,$_, 2; #команда может содержать пробел Время надо поискать какое-то другое. То, что указал я, отличается от вазвращаемого командой top Кроме того, так как запускаться будет из под cron-а, хорошо бы как-то логироваться - убился процесс/не убился Это сообщение отредактировал(а) aksined - 28.8.2009, 16:01 |
||||
|
|||||
amg |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1145 Регистрация: 3.8.2006 Где: Новосибирск Репутация: 9 Всего: 50 |
Совершенно согласен. И тогда (но только тогда) какие-либо, например, предлагаемые Вами оптимизации будут уместны (а начинать оптимизировать тогда уж нужно с замены системной команды в обратных кавычках, чтобы расход памяти уменьшить).
|
|||
|
||||
FishHunter |
|
|||
Новичок Профиль Группа: Участник Сообщений: 47 Регистрация: 12.2.2009 Репутация: нет Всего: нет |
Благодарю за поправки, но то что предложил amg у меня прекрастно работает. Я дописал ещё пару строк, чтобы велись логи убитых процессов для полного контроля над ситуацией. В моём случае убивается по 2-3 процесса каждый час, поэтому мудрить больше не охота
![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Perl: Системное программирование" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Perl: Системное программирование | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |