| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Perl: Системное программирование > PERL-скрипт для мониторинга и очистки памяти |
| Автор: comhunt 29.9.2009, 09:20 |
| Не всегда бывает просто отследить причину утечки памяти порождаемых PERL-сценариями. Но, как я понимаю, можно устранять последствия подобных утечек за счет постоянного мониторинга ситуации. У меня появилась идея написать PERL-скрипт, который бы это делал. Но для его написания необходимо последовательно решить несколько задач: 1. Просмотреть результат системно ps или top и поместить их в массив хешев, который бы имел следующие значения ключей: PID Пользователь Процессор % Память (Mb) Время работы Команда 2. Сделать цикл по данном массиву, выбирая те процессы, у которых значения «Память (Mb)» и «Процессор %» больше максимально допустимых, которые я сам могу задать в зависимости от ситуации. 3. Взять все выбранные процессы и убить их. 4. Повесить данный скрипт на крон, чтобы он каждую минуту запускался и чистил память. В общем-то, идея достаточно прозрачна, с пунктами 2 и 4 проблем нет – там все тривиально для меня. Но я не знаю, как практически реализовать пункт 1,3. |
| Автор: amg 29.9.2009, 11:29 | ||||
Например, так (п.1):
|
| Автор: comhunt 29.9.2009, 12:41 |
| Попробовал выполнить данный скрипт. В логах ошибок выдало: 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 29.9.2009, 14:07 |
| Еще один момент, который бы хотелось уточнить: Со скриптом вроде разобрался - переделал под себя. Но вот еще проблемка: Я запуская данный скрипт из под пользователя, и естественно он мне выдает только процессы которые относятся к данному пользователю. А мне нужно просмотреть все процессы которые есть в root. Каким образом это возможно реализовать? |
| Автор: shamber 29.9.2009, 14:49 |
| comhunt, sudo ? |
| Автор: gcc 30.9.2009, 00:42 |
| comhunt, на FreeBSD можно поставить опцию одну в sysctl.con тогда все процессы будут видны из под пользователей |