Найти тему

Командная строка Windows 5. Диспетчер задач в консоли

Оглавление

Диспетчер задач, штука приятная, красивая, вызывается простой комбинацией клавиш Ctrl+Shift+Esc.

Ну, мы тут вроде про командную строку говорим, так что рассмотрим аналогичные Диспетчеру функции :)

Посмотреть процессы - tasklist

Данная команда позволяет посмотреть список выполняемых процессов в системе.

TASKLIST [/M [<модуль>] | /SVC | /V] [/FI <фильтр>] [/FO <формат>] [/NH]

Без ключей выдаст список всех процессов с именем и занимаемой оперативной памятью:

/M [<модуль>] Отображение всех задач, которые используют данное имя exe/dll. Если имя модуля не указано, то отображаются все загруженные модули.

tasklist /M NETAPI32.dll
tasklist /M NETAPI32.dll

/SVC Отображение служб для каждого процесса.

tasklist /SVC
tasklist /SVC

/V Ведение подробного протоколирования.
Выведет не только имя процесса и с занятой памятью, но и его состояние: RUNNING (работает), NOT RESPONDING (не отвечает), UNKNOWN (неизвестно), а также процессорное время (сколько ЧЧ:ММ:СС процессор обрабатывал этот процесс, брр), заголовок окна и т.д.

-4

/FI <фильтр> Отфильтровать список по критерию.

Фильтры записываются так "<Имя фильтра> <оператор> <значение>"

Вот сами фильтры и их "значения":
STATUS Состояние: RUNNING | NOT RESPONDING | UNKNOWN
IMAGENAME Имя образа (процесса)
PID Process ID
CPUTIME Процессорное время в формате ЧЧ:ММ:СС
MEMUSAGE Использование памяти в KБ
SERVICES Имя службы
WINDOWTITLE Название окна (заголовок сверху)
MODULES Имя DLL

Операторы тут логические:
eq (равно), ne (не равно), gt (больше), lt (меньше), ge (больше или равно), le (меньше или равно).

Очень полезен ключ /FI в соединении с ключом /V, чтобы можно было, например, отобрать работающие процессы:

tasklist /V /FI "STATUS eq RUNNING"

-5

Или отобрать все одноименные процессы:

tasklist /V /FI "IMAGENAME eq имя_процесса.exe"

-6

Кстати, имена можно писать не полностью, заменяя "неизвестные" части звездочкой *:

tasklist /FI "IMAGENAME eq calc*"

-7

/FO <формат> Допустимые значения: "TABLE", "LIST", "CSV". По умолчанию используется TABLE

/NH Отключение отображения заголовка "Column Header" в выходных данных. Допустимо для форматов "TABLE" и "CSV".

Полезно такое при сохранении в текстовый файл таким макаром:

tasklist /NH /FO "CSV" > "D:/processes.csv"

Посмотреть процессы - wmic process

Посмотреть процессы можно и с помощью WMI. Если хочется кратко:

wmic process list brief

Имя, ID, приоритет и память
Имя, ID, приоритет и память

Можно задавать и свои желаемые поля на вывод: wmic process get <x, y, z> Например, вывести места расположения программ:

wmic process get Name, ProcessId, WorkingSetSize, ExecutablePath

-10

Завершить процесс - taskkill

Завершить процесс? Да пожалуйста, taskkill всех замочит :) Достаточно номера дома ID.

TASKKILL { [/FI <фильтр>] [/PID <процесс> | /IM <образ>] } [/T] [/F]

/FI <фильтр> Отфильтровать процессы. Фильтры точно такие же, как в tasklist.

Например, найдем процесс по имени:
taskkill /FI "IMAGENAME eq calc*"

-11

Или завершим все "не отвечающие" процессы:
taskkill /FI "STATUS eq NOT RESPONDING"

Вместо фильтра по имени можно использовать ключ:
/IM <образ> Имя образа процесса, который требуется завершить.

Например: taskkill /IM "calc*"

-12

Иногда нужно завершить не все процессы с указанным именем (у того же Хрома их куча). Тогда необходимо отфильтровать их по ID:
/PID <процесс> Идентификатор процесса, который требуется завершить.

Например, сперва посмотрим с помощью:

tasklist /FI "IMAGENAME eq chrome*"

все процессы Хрома, и попытаемся завершить один из них, обратившись по PID:

taskkill /PID 5888

Как видно, не все процессы можно завершить так, поэтому добавим ключ /F для принудительного завершения процесса:

taskkill /PID 5888 /F

-13

И, напоследок, последний ключ данной команды:
/T Завершение указанного процесса и всех его дочерних процессов.

Например: taskkill /PID 5840 /T /F

Даже нашлись какие-то дети у наугад выбранного процесса :)
Даже нашлись какие-то дети у наугад выбранного процесса :)

С процессами разобрались, теперь по-изображаем другие функции диспетчера задач.

Вывести загрузку памяти - systeminfo

Тут может помочь systeminfo. Но так как данная команда выдает за раз кучу информации, отфильтруем строки, относящиеся только к памяти, с помощью find:

systeminfo | find /I "Памят"

Не так красиво, как Диспетчере, но тоже неплохо :)
Не так красиво, как Диспетчере, но тоже неплохо :)

Вывести загрузку памяти - WMI

Можно опять же посмотреть через WMI, все равно sysinfo по сути просто берет оттуда инфу:

wmic os get TotalVisibleMemorySize, TotalVirtualMemorySize, FreePhysicalMemory, FreeVirtualMemory

-16

Выводится, к сожалению, в Кбайтах, неудобно по нынешним меркам. Обернем в батник, чтобы пересчитывал в Мбайты :

@echo off
chcp 1251 > nul

for /f "tokens=2 delims==" %%i in ('wmic os get TotalVisibleMemorySize /value^|find "="') do set total_phys_mem=%%i
for /f "tokens=2 delims==" %%i in ('wmic os get FreePhysicalMemory /value^|find "="') do set free_phys_mem=%%i
for /f "tokens=2 delims==" %%i in ('wmic os get TotalVirtualMemorySize /value^|find "="') do set total_virt_mem=%%i
for /f "tokens=2 delims==" %%i in ('wmic os get FreeVirtualMemory /value^|find "="') do set free_virt_mem=%%i

set /a total_phys_mem/=1024
set /a free_phys_mem/=1024
set /a total_virt_mem/=1024
set /a free_virt_mem/=1024

echo Полный объем физической памяти: %total_phys_mem% Мбайт
echo Доступная физическая память: %free_phys_mem% Мбайт
echo Полный объем виртуальной памяти: %total_virt_mem% Мбайт
echo Доступная виртуальная память: %free_virt_mem% Мбайт

pause

Результат работы
Результат работы

Вывести загрузку памяти - typeperf

Еще один вариант: вывести данные со счетчиков производительности:

typeperf "\Память\% использования выделенной памяти"
typeperf "\Память\Доступно МБ"

-18

Чтобы завершить показ, нажмите Ctrl+C.

Другие счетчики, связанные с памятью, можно увидеть, введя:
typeperf -qx Память

Вывести загрузку процессора - WMI

Все тот же старый добрый WMI... Вводим команду:
wmic cpu get loadpercentage

И видим занятость процессора в процентах
И видим занятость процессора в процентах

Вывести загрузку процессора - typeperf

Больше информации можно вывести со счетчиков - там можно для каждого ядра отдельно посмотреть или для всех сразу (_Total):

typeperf "\Процессор(_Total)\% загруженности процессора"
typeperf "\Процессор(<номер_ядра>)\% загруженности процессора"

-20

Все счетчики процессора можно увидеть, введя: typeperf -qx Процессор

Использование сети - typeperf

Команда netstat немного обсуждалась в моей статье, посвященной сетевым функциям CMD, так что воспользуемся typeperf:

typeperf "\Сетевой интерфейс(сетевая_карта)\Отправлено байт/с"
typeperf "\Сетевой интерфейс(сетевая_карта)\Получено байт/с"

-21

Чтобы посмотреть название интерфейсов и их счетчики, можно набрать:
typeperf -qx | find "Сетевой интерфейс"

Пользователи системы

В Диспетчере есть вкладка "Пользователи", так что и ее изобразим :)

Первый вариант - команда quser

-22

Или опять WMI, прости господи:
wmic computersystem get username

-23

Фух, вроде все вкладки Диспетчера задач разобрали в CMD :)

Напоследок, список моих статей про CMD: