![]() |
Модераторы: ginnie, korob2001 |
![]() ![]() ![]() |
|
comhunt |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 104 Регистрация: 20.3.2009 Репутация: нет Всего: нет |
Не всегда бывает просто отследить причину утечки памяти порождаемых PERL-сценариями. Но, как я понимаю, можно устранять последствия подобных утечек за счет постоянного мониторинга ситуации. У меня появилась идея написать PERL-скрипт, который бы это делал. Но для его написания необходимо последовательно решить несколько задач:
1. Просмотреть результат системно ps или top и поместить их в массив хешев, который бы имел следующие значения ключей: PID Пользователь Процессор % Память (Mb) Время работы Команда 2. Сделать цикл по данном массиву, выбирая те процессы, у которых значения «Память (Mb)» и «Процессор %» больше максимально допустимых, которые я сам могу задать в зависимости от ситуации. 3. Взять все выбранные процессы и убить их. 4. Повесить данный скрипт на крон, чтобы он каждую минуту запускался и чистил память. В общем-то, идея достаточно прозрачна, с пунктами 2 и 4 проблем нет – там все тривиально для меня. Но я не знаю, как практически реализовать пункт 1,3. |
|||
|
||||
amg |
|
||||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1145 Регистрация: 3.8.2006 Где: Новосибирск Репутация: 9 Всего: 50 |
Например, так (п.1):
|
||||
|
|||||
comhunt |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 104 Регистрация: 20.3.2009 Репутация: нет Всего: нет |
Попробовал выполнить данный скрипт.
В логах ошибок выдало: top: illegal option -- 1 Top version 3.5beta12 Usage: top [-abCHIijnPqStuv] [-d count] [-m io | cpu] [-o field] [-s time] [-U username] [number] Bad PID USER %CPU %MEM TIME+ COMMAND Добавлено через 10 минут и 25 секунд А... кажется доперло... -n1 Должно быть или -n или -n 1 Пробела нет |
|||
|
||||
comhunt |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 104 Регистрация: 20.3.2009 Репутация: нет Всего: нет |
Еще один момент, который бы хотелось уточнить:
Со скриптом вроде разобрался - переделал под себя. Но вот еще проблемка: Я запуская данный скрипт из под пользователя, и естественно он мне выдает только процессы которые относятся к данному пользователю. А мне нужно просмотреть все процессы которые есть в root. Каким образом это возможно реализовать? |
|||
|
||||
shamber |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1422 Регистрация: 5.9.2006 Где: Россия Репутация: 1 Всего: 18 |
comhunt, sudo ?
Это сообщение отредактировал(а) shamber - 29.9.2009, 14:49 |
|||
|
||||
amg |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1145 Регистрация: 3.8.2006 Где: Новосибирск Репутация: 9 Всего: 50 |
||||
|
||||
gcc |
|
|||
![]() Агент алкомафии ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2691 Регистрация: 25.4.2008 Где: %&й Репутация: нет Всего: 17 |
comhunt, на FreeBSD можно поставить опцию одну в sysctl.con тогда все процессы будут видны из под пользователей
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Perl: Системное программирование" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Perl: Системное программирование | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |