Диспетчер задач, штука приятная, красивая, вызывается простой комбинацией клавиш Ctrl+Shift+Esc.
Ну, мы тут вроде про командную строку говорим, так что рассмотрим аналогичные Диспетчеру функции :)
Посмотреть процессы - tasklist
Данная команда позволяет посмотреть список выполняемых процессов в системе.
TASKLIST [/M [<модуль>] | /SVC | /V] [/FI <фильтр>] [/FO <формат>] [/NH]
Без ключей выдаст список всех процессов с именем и занимаемой оперативной памятью:
/M [<модуль>] Отображение всех задач, которые используют данное имя exe/dll. Если имя модуля не указано, то отображаются все загруженные модули.
/SVC Отображение служб для каждого процесса.
/V Ведение подробного протоколирования.
Выведет не только имя процесса и с занятой памятью, но и его состояние: RUNNING (работает), NOT RESPONDING (не отвечает), UNKNOWN (неизвестно), а также процессорное время (сколько ЧЧ:ММ:СС процессор обрабатывал этот процесс, брр), заголовок окна и т.д.
/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"
Или отобрать все одноименные процессы:
tasklist /V /FI "IMAGENAME eq имя_процесса.exe"
Кстати, имена можно писать не полностью, заменяя "неизвестные" части звездочкой *:
tasklist /FI "IMAGENAME eq calc*"
/FO <формат> Допустимые значения: "TABLE", "LIST", "CSV". По умолчанию используется TABLE
/NH Отключение отображения заголовка "Column Header" в выходных данных. Допустимо для форматов "TABLE" и "CSV".
Полезно такое при сохранении в текстовый файл таким макаром:
tasklist /NH /FO "CSV" > "D:/processes.csv"
Посмотреть процессы - wmic process
Посмотреть процессы можно и с помощью WMI. Если хочется кратко:
wmic process list brief
Можно задавать и свои желаемые поля на вывод: wmic process get <x, y, z> Например, вывести места расположения программ:
wmic process get Name, ProcessId, WorkingSetSize, ExecutablePath
Завершить процесс - taskkill
Завершить процесс? Да пожалуйста, taskkill всех замочит :) Достаточно номера дома ID.
TASKKILL { [/FI <фильтр>] [/PID <процесс> | /IM <образ>] } [/T] [/F]
/FI <фильтр> Отфильтровать процессы. Фильтры точно такие же, как в tasklist.
Например, найдем процесс по имени:
taskkill /FI "IMAGENAME eq calc*"
Или завершим все "не отвечающие" процессы:
taskkill /FI "STATUS eq NOT RESPONDING"
Вместо фильтра по имени можно использовать ключ:
/IM <образ> Имя образа процесса, который требуется завершить.
Например: taskkill /IM "calc*"
Иногда нужно завершить не все процессы с указанным именем (у того же Хрома их куча). Тогда необходимо отфильтровать их по ID:
/PID <процесс> Идентификатор процесса, который требуется завершить.
Например, сперва посмотрим с помощью:
tasklist /FI "IMAGENAME eq chrome*"
все процессы Хрома, и попытаемся завершить один из них, обратившись по PID:
taskkill /PID 5888
Как видно, не все процессы можно завершить так, поэтому добавим ключ /F для принудительного завершения процесса:
taskkill /PID 5888 /F
И, напоследок, последний ключ данной команды:
/T Завершение указанного процесса и всех его дочерних процессов.
Например: taskkill /PID 5840 /T /F
С процессами разобрались, теперь по-изображаем другие функции диспетчера задач.
Вывести загрузку памяти - systeminfo
Тут может помочь systeminfo. Но так как данная команда выдает за раз кучу информации, отфильтруем строки, относящиеся только к памяти, с помощью find:
systeminfo | find /I "Памят"
Вывести загрузку памяти - WMI
Можно опять же посмотреть через WMI, все равно sysinfo по сути просто берет оттуда инфу:
wmic os get TotalVisibleMemorySize, TotalVirtualMemorySize, FreePhysicalMemory, FreeVirtualMemory
Выводится, к сожалению, в Кбайтах, неудобно по нынешним меркам. Обернем в батник, чтобы пересчитывал в Мбайты :
@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 "\Память\Доступно МБ"
Чтобы завершить показ, нажмите Ctrl+C.
Другие счетчики, связанные с памятью, можно увидеть, введя:
typeperf -qx Память
Вывести загрузку процессора - WMI
Все тот же старый добрый WMI... Вводим команду:
wmic cpu get loadpercentage
Вывести загрузку процессора - typeperf
Больше информации можно вывести со счетчиков - там можно для каждого ядра отдельно посмотреть или для всех сразу (_Total):
typeperf "\Процессор(_Total)\% загруженности процессора"
typeperf "\Процессор(<номер_ядра>)\% загруженности процессора"
Все счетчики процессора можно увидеть, введя: typeperf -qx Процессор
Использование сети - typeperf
Команда netstat немного обсуждалась в моей статье, посвященной сетевым функциям CMD, так что воспользуемся typeperf:
typeperf "\Сетевой интерфейс(сетевая_карта)\Отправлено байт/с"
typeperf "\Сетевой интерфейс(сетевая_карта)\Получено байт/с"
Чтобы посмотреть название интерфейсов и их счетчики, можно набрать:
typeperf -qx | find "Сетевой интерфейс"
Пользователи системы
В Диспетчере есть вкладка "Пользователи", так что и ее изобразим :)
Первый вариант - команда quser
Или опять WMI, прости господи:
wmic computersystem get username
Фух, вроде все вкладки Диспетчера задач разобрали в CMD :)
Напоследок, список моих статей про CMD:
- В Миниобзоре программ-терминалов первый пункт посвящен отправке и получению данных с COM-порта
- Статья о том, как проверять и активировать лицензию MS Office из CMD