Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Perl: Системное программирование > Контроль процессов на линукс сервере |
Автор: FishHunter 26.8.2009, 22:44 |
Добрый вечер, Прошу совета общественности как решить следующую задачу: На серваке запущено практически постоянно n-ое число процессов (назовем их wokers.pl). Некоторые из них "подвисают" и начинают хавать трафф, что не желательно. Я устал вручную тереть подвисшие процессы (смотрю top и у которых TIME+ больше чем мне надо тех убиваю, знаю извращение ![]() ЗЫ Т.е. известно имена процессов, надо убивать те, TIME+ которых больше заданной мной величины. ЗЫЫ Менять что-то в скриптах, которые рождают эти процессы нет никакого желания ![]() |
Автор: amg 27.8.2009, 08:17 | ||
Собственно, алгоритм действий Вы вполне исчерпывающе описали, остается только пересказать его на языке Perl ![]()
|
Автор: FishHunter 27.8.2009, 10:28 |
сенькю вери мач ![]() |
Автор: aksined 28.8.2009, 15:59 | ||||
Есть несколько предложений Одна и та же строка обрабатывается четыре раза. Причём два раза - абсолютно идентичным сплитом. В случае со списком процессов - это не имеет значения. А гигабайтные файлы лучше обрабатывать по-другому.
Мне кажется, что лучше всё это хозяйство реализовать по-другому. Во-первых, можно заметить по моему примеру, что длинные имена процессов порезались. Во-вторых, если есть модуль, я правда не нашел, лучше пользоваться им. В-третьих, вообще есть другая команда ps -eo pid,time,cmd её вывод вообще распарсится вот так ($pid, $time, $cmd) = split / /,$_, 2; #команда может содержать пробел Время надо поискать какое-то другое. То, что указал я, отличается от вазвращаемого командой top Кроме того, так как запускаться будет из под cron-а, хорошо бы как-то логироваться - убился процесс/не убился |
Автор: amg 29.8.2009, 15:18 |
Совершенно согласен. И тогда (но только тогда) какие-либо, например, предлагаемые Вами оптимизации будут уместны (а начинать оптимизировать тогда уж нужно с замены системной команды в обратных кавычках, чтобы расход памяти уменьшить). |
Автор: FishHunter 1.9.2009, 17:35 |
Благодарю за поправки, но то что предложил amg у меня прекрастно работает. Я дописал ещё пару строк, чтобы велись логи убитых процессов для полного контроля над ситуацией. В моём случае убивается по 2-3 процесса каждый час, поэтому мудрить больше не охота ![]() |