Какую информацию о памяти позволяет получить утилита tasklist
Команда TASKLIST используется для получения списка процессов, выполняющихся на локальном или удаленном компьютере в данный момент времени.
Формат командной строки:
Примеры использования TASKLIST.
tasklist /? - выдать краткую справку по использованию команды.
tasklist - отобразить на экране консоли список процессов выполняющихся на локальном компьютере в данный момент времени. Пример отображаемой информации
Имя образа - имя исполняемого файла данного процесса. System Idle Process - это не имя образа, а индикация режима простоя, когда ни один из процессов не выполняется.
PID - уникальный идентификатор процесса. Присваивается процессу при его создании.
№ сеанса - номер сеанса пользователя.
Память - объем используемой процессом памяти.
tasklist /FO LIST - то же, что и в предыдущем примере, но выводимые данные представлены в виде списка:
tasklist /FO CSV - отобразить список процессов в формате полей, разделяемых запятой:
tasklist /fo csv /nh - то же, что и в предыдущем примере, но строка заголовка с названием колонок не отображается ( 1-я строка ).
tasklist -S SERVER - отобразить список процессов выполняющихся на удаленном компьютере SERVER в данный момент времени.
tasklist /m wsock32.dll - отобразить список процессов, которые подгружают библиотеку wsock32.dll . Пример отображаемых результатов выполнения команды:
tasklist /m - если имя модуля не задано, то отображается весь список процессов, и по каждому процессу - весь список модулей. Пример результата выполнения команды:
tasklist /SVC - отобразить информацию о системных службах. Пример:
В колонке Службы отображается короткое имя службы, например, DcomLaunch - для Службы Терминалов
tasklist -s 192.168.0.1 -U mydomain\admin -P mypass /FI "memusage gt 10000" - отобразить список процессов, использующих более 10000кб ( 10 Мб) памяти на компьютере с IP-адресом 192.168.0.1 . При подключении к удаленному компьютеру используется имя пользователя admin в домене mydomain и пароль mypass
tasklist /fi "username ne NT AUTHORITY\Система" | more - отобразить список процессов, выполняющихся не от имени локальной системной учетной записи. Для некоторых версий Windows, вместо русского Система нужно использовать System . Команда объединена в цепочку с more для организации постраничного вывода на экран.
tasklist -s 192.168.0.110 -U mydomain\admin -P mypass /FI "sessionname eq RDP*" - отобразить список процессов на удаленном компьютере, созданных клиентами служб терминалов.
Кроме получения чисто справочной информации о выполняющихся в системе процессах, команда TASKLIST обычно используется как средство получения исходных данных для команды принудительного завершения процессов TASKKIll
а при работе с Windows возникают некоторые нюансы, например когда надо разобраться - кто кушает память!?
открываем диспетчер задач и видим, что кушает ее процесс svchost.exe, который запущен раз 15, и это есть 15 отдельных служб
выяснить что к чему, какой процесс чем является можно конечно с помощью замечательной программы "process explorer"
а как это передать в скрипт?
если есть потребность мониторить какая служба сколько ест например или типа того
при недостатке памяти выдать список процессов или служб потребляющих больше 100 МБ например
в общем нужна консольная утилита вывод которой пригоден для дальнейшей обработки, для этого есть замечательная программа tasklist, вот несколько примеров
список всех процессов svchost.exe:
tasklist /fi "imagename eq svchost.exe"
список всех служб использующих образ svchost.exe:
tasklist /svc /fi "imagename eq svchost.exe"
список всех процессов, использующих памяти больше 10000 КБ:
tasklist /fi "memusage gt 10000"
список всех процессов, использующих памяти больше 10000 КБ с указанием служб на них запущенных:
tasklist /svc /fi "memusage gt 10000"
список процессов svchost.exe пользующих памяти больше 10000 КБ:
tasklist /fi "imagename eq svchost.exe" /fi "memusage gt 10000"
список процессов svchost.exe пользующих памяти больше 10000 КБ, с указанием служб на них запущенных:
tasklist /svc /fi "imagename eq svchost.exe" /fi "memusage gt 10000"
список служб содержащих в названии слово начинающееся на "net" и занимающих более 10000 КБ памяти:
tasklist /svc /fi "services eq net*" /fi "memusage gt 10000"
Хорошие рекомендации. А есть какие-то наработки на эту же тему в линуксе? Мне, к примеру, всегда хотелось как-то реализовать мониторинг основных потребителей ресурсов сервера. К примеру, мониторится нагрузка процессора или памяти. Срабатывает триггер на 30 минут, что процессор сильно нагружен, потом проходит нагрузка. Постфактум уже невозможно проанализировать, что было на сервере. Ты на него заходишь, а там все ок.
Есть идея сделать как-то анализ запущенных процессов при сработке какого-то триггера. В целом, задача понятная и не сказать, что сильно сложная, но у меня никогда не доходят руки собраться и все сделать красиво и удобно.
Первое, что приходит в голову, это запускать скрипт по триггеру, который соберет инфу о процессах. Но дальше идут вопросы, куда вывод скрипта направлять? В почту? Не очень удобно, хочется тоже в мониторинг, или желательно в то же письмо, что и уведомление триггера. Тут возникает следующий вопрос. Как их удобно передать и оформить? В каком виде, в какой итем и вообще, как это сделать чисто организационно? Много вопросов, задача не такая простая, как кажется на первый взгляд.
В этой статье мы рассмотрим две утилиты командной строки, который служат для работы с процессами, а именно, утилиту tasklist и taskkill.
Командная строка процессы, утилита tasklist
Утилита командной строки tasklist служит для вывода списка процессов Windows (пример использования: "Получение списка процессов средствами командной строки и сервера Windows Script Host")
tasklist[.exe] [/s <система>] [/u [<домен>\]<пользователь> [/p <пароль>]] [/fo