Анализ выполняемых процессов – Tasklist

Basic tasklist command

If all you want
to know is what tasks are running, enter TASKLIST
into the command line.

The output can be redirected to a file if you wish.
The default format is a table with several columns of information. An example
of a partial console output is shown in the figure below. There are five
columns of information.
The following list gives the meanings of the various column headings:

Filtering tasklist output

The output can be narrowed down to specific parameters by using filters and the
switch /FI. There are a number of comparison operators
and these are given in Table II.

OperatorDescription
eqEquals
neDoes not equal
gtGreater than. Only used with numeric values
ltLess than. Only used with numeric values
geGreater than or equal to. Only used with numeric values
leLess than or equal to. Only used with numeric values

Find which dll files are used by a process


Processes can be using many different DLL files by calling on various procedures
from their libraries. It is not uncommon for a problem to arise because a DLL
is corrupted or is the wrong version. To find which DLLs are used by each process
use the command
tasklist /mThis will return a table relating
Image Name, PID, and Modules. “Modules” here indicates DLLs. The table
may have quite a few entries and the list can be limited to a specific DLL by
using its name in the command. For example, to see only the processes that use
oleaut32.dll,
enter
tasklist
/m oleaut32.dll

Find which services use a process


It can be very useful to know the relationship between a process and the services
that are running on a system (for a discussion of
services) To obtain a table relating Image Name, PID, and Services use
the command
tasklist
/svc >list.txt
Here I have shown the redirect to a file to illustrate
creating a text record. One application of this command is for diagnosing
problems with a service by monitoring the memory usage and other properties
of the processes associated with the service.

:/>  Как сделать скриншот рабочего стола на Windows 7 и как сделать скриншот экрана на компьютере или ноутбуке Samsung с Windows

Примеры команды tasklist

Чтобы понять применение в синтаксисе команды информации о компьютере и пользователе, рассмотрим пример.

Проверка выполняемых задач на компьютере с именем Mail: tasklist /s mail

Поля, выводимые Tasklist, содержат следующую информацию:

Список заданий

Список задач — это утилита, которая перечисляет запущенные в данный момент процессы на локальном или удаленном компьютере. Вы можете быстро проверить, какие процессы работают в фоновом режиме, а затем прекратить такие процессы; мы можем использовать команду Taskkill, чтобы убить его.

Синтаксис:

Тасккилл

Имя говорит само за себя; Как только вы определили, какой процесс вам нужно убить, вы можете использовать Taskkill, чтобы удалить программу из списка запущенных процессов.

Синтаксис:

Управление процессами из командной строки

Способов управлять процессами в Windows предостаточно, и командная строка занимает в них далеко не первое место. Однако иногда бывают ситуации, когда все остальные инструменты кроме командной строки недоступны, например некоторые вредоносные программы могут блокировать запуск Task Manager и подобных ему программ. Да и просто для общего развития полезно знать способы управления компьютером из командной строки.

Для управления процессами в командной строке есть две утилиты — tasklist и taskkill. Первая показывает список процессов на локальном или удаленном компьютере, вторая позволяет их завершить. Попробуем …

Если просто набрать команду tasklist в командной строке, то она выдаст список процессов на локальном компьютере.

команда tasklist

По умолчанию информация выводится в виде таблицы, однако ключ /fo позволяет задать вывод в виде списка или в формате CSV, а ключ /v  показывает более подробную информацию о процессах, например команда tasklist /v /fo list выведет подробное описание всех процессов в виде списка.

команда tasklist

Список получится довольно большой, поэтому попробуем уточнить запрос.  Для этого используем ключ /fi , который позволяет использовать фильтры для вывода данных, например команда tasklist /fi ″username eq user″ /fi ″memusage le 40000″ выводит список процессов пользователя user, которые потребляют не больше 40Мб памяти.

:/>  Синтаксис команд командной строки. Файловая структура. Групповые символы.

команда tasklist

Найдя процессы, которые необходимо завершить, воспользуемся командой taskkill. Завершать процессы можно по имени, идентификатору процесса (PID) или задав условия с помощью фильтров. Для примера запустим несколько экземпляров блокнота (notepad.exe) и попробуем завершить его разными способами.

команда taskkill

Ключ /f завершает процесс принудительно, а /t завершает все дочерние процессы.

Полную справку по командам tasklist и taskkill можно получить, введя их с ключом /?

Теперь пустим в ход тяжелую артиллериюPowerShell. Его можно запустить не выходя из командной строки. Для получения списка процессов используем командлет Get-Process.

командлет Get-Process

Чтобы не выводить весь список процессов можем воспользоваться командлетом Where-Object, который задает фильтр для выводимой информации. Для примера выведем список процессов, которые загружают процессор и отсортируем их по возрастанию нагрузки с помощью команды:

Get-Process | where {$_.cpu -gt 0} | sort cpu

фильтруем вывод процессов

С помощью PowerShell мы можем получить любую информацию о любом процессе. В качестве примера возьмем процесс cmd и выведем список его свойств командой:

Get-Process -Name cmd | Get-Member -Membertype property

смотрим свойства процесса cmd

Выбираем те свойства, что нам интересны ( в примере имя и ID процесса, путь к файлу, используемые модули и время запуска) и выводим их в виде списка командой:

Get-Process -Name cmd | Format-List name, id, path, modules, starttime

выводим свойства процесса

Таким образом мы можем посмотреть когда и кем был запущен процесс, сколько он потребляет ресурсов, где находится исполняемый файл и еще много различной информации.

Для завершения процесса в PowerShell есть командлет Stop-Process. Он завершает указанный процесс по его имени или идентификатору. Однако мы поступим по другому и передадим результат выполнения командлета Get-Process по конвейеру:

Get-Process | where {$_.name -match ″notepad″}  | Stop-Process

завершаем процесс

Get-Process не может показать процессы на удаленном компьютере, для этого воспользуемся командлетом Get-WmiObject , например посмотрим процессы на удаленном компьютере PC командой:

:/>  Типы данных power shell

Get-WmiObject win32_process -computername PC | ft name, processid, description

смотрим процессы на удаленном компьютере

Для боле полного ознакомления с PowerShell можно воспользоваться встроенной справкой, для вызова справки нужно набрать Get-Help ″имя командлета″

Ну и для полноты обзора рассмотрим еще одно средство для управления процессами из командной строки. Это утилиты Pslist и Pskill входящие в состав пакета PSTools от компании Sysinternals.

Эти утилиты не требуют специальной установки, достаточно просто скопировать их на диск. Для запуска нужно зайти в папку с утилитами и ввести в командной строке необходимую команду.

команда pslist

Pslist может выводить информацию о процессах по имени или ID, например командой pslist notepad -x выведем подробную информацию о нашем «многострадальном» блокноте.

подробный вывод информации о процессе

Особенностью утилиты Pslist является режим task-manager. В  этом режиме информация автоматически обновляется, причем можно задать время работы и интервал обновления. Запускается режим ключом -s , например командой tasklist -s -r 10 запускаем режим программу в режиме task-manager с обновлением раз в 10 сек.

task-manager mode

Завершение процесса программой pskill предельно просто, вводим команду и имя (или ID) процесса и все.

завершение процесса

Справку по утилитам Pslist и Pskill можно посмотреть, введя команду с ключом /?

И еще, все манипуляции с процессами необходимо выполнять с правами администратора, для этого командную строку требуется запускать с повышением привилегий.