- Расширенное использование tasklist и taskkill для аудита и закрытия процессов с помощью фильтров, CSV и удаленного выполнения.
- Комплексное управление услугами с помощью sc: создание, запрос, запуск, остановка и удаление локально и удаленно.
- Лучшие практики: минимальные привилегии, меры предосторожности и ответственное использование /F и фильтров.
Если вы ежедневно работаете с Windows , контроль над тем, что запускается и как реагировать на зависания, имеет решающее значение для быстрой или медленной работы компьютера. К счастью, с помощью нескольких встроенных команд , таких как tasklist, taskkill и sc, вы можете проводить аудит, фильтровать, останавливать и автоматизировать процессы и службы как локально, так и на удаленных машинах.
В этом практическом руководстве я шаг за шагом объясню, как отображать процессы в различных форматах, как применять расширенные фильтры, как безопасно закрывать зависшие приложения и как точно управлять системными службами. Все это сопровождается реальными примерами, готовыми к копированию и вставке , предупреждениями об удаленном доступе, а также полезными советами и рекомендациями, которые сделают навигацию по консоли легкой и удобной.
Процессы и услуги: чем они похожи и чем отличаются
В Windows процесс — это запущенная программа, которая может иметь потоки, выполнять задачи и завершаться по завершении своей работы. Служба, с другой стороны, — это системный компонент, который обычно работает в фоновом режиме, может быть запущен, остановлен, возобновлен или перезапущен и по своей природе остается активной до тех пор, пока система или администратор не примут иное решение.
Ключевые различия заключаются в следующем: процессы могут работать в фоновом или переднем плане и завершаться при необходимости, в то время как службы управляются с помощью состояний (запуск, остановка, пауза, продолжение) и предназначены для постоянного функционирования. Процесс может создавать или управлять службами, а служба, в свою очередь, может запускать дочерние процессы.
Если вы предпочитаете графический интерфейс, диспетчер задач (taskmgr.exe) предоставляет снимок текущей системы: вкладка «Процессы» для отображения ЦП, памяти, графического процессора, сети и состояния (включая классическое «Не отвечает»), а также вкладка «Службы» для просмотра их PID, состояния, типа запуска и производителя. Но когда вам нужна точность, автоматизация и удаленный доступ, командная строка станет вашим лучшим другом.
Ключевые инструменты для управления системой из консоли
К основным утилитам, которые вам необходимо знать, относятся: tasklist (для отображения списка процессов), taskkill (для завершения процессов по PID или имени образа) и sc (для управления службами с помощью диспетчера служб). Также очень полезны WMIC (для запроса WMI через консоль) и команды query/qprocess для проверки процессов по сеансу или пользователю.
С помощью этих команд вы можете создавать CSV-отчеты для Excel, создавать списки без заголовков, применять фильтры по использованию памяти или состоянию, а также действовать с хирургической точностью: от завершения работы вредоносного процесса notepad.exe до закрытия целого дерева дочерних процессов, запущенных консолью cmd.exe.
Список процессов с помощью списка задач: фильтры, форматы и примеры
Самый простой способ увидеть, какие задачи запущены, — это команда `tasklist` . Без каких-либо опций вы получите имя образа, PID, номер сессии и использование памяти. Но самое интересное — это её модификаторы, которые позволяют фильтровать и настраивать вывод по своему усмотрению.
Очень полезные параметры: /V (подробный список), /SVC (отображает службы, обслуживаемые каждым процессом), /M (указывает, какие процессы загружают определенную DLL/EXE-файл), /FO ("TABLE", "LIST", "CSV"), /NH (скрывает заголовки в TABLE/CSV) и /FI (фильтры). Также есть /S , /U и /P для удаленного выполнения с использованием учетных данных.
С помощью этих команд вы можете создавать CSV-отчеты для Excel, создавать списки без заголовков, применять фильтры по использованию памяти или состоянию, а также действовать с хирургической точностью: от завершения работы вредоносного процесса notepad.exe до закрытия целого дерева дочерних процессов, запущенных консолью cmd.exe.
Чтобы просмотреть полную справку на рабочем столе, скопируйте вывод с помощью команды: "TASKLIST /? >%userprofile%/Desktop/uso.txt" . Таким образом, у вас под рукой будут все описанные параметры, и вам не придется полагаться на память при работе со сложными фильтрами.
tasklist
tasklist /v
tasklist /svc
tasklist /m ntdll.dll
Вывод в формате CSV идеально подходит для открытия в Excel или обработки с помощью скриптов. Вы можете создать очень подробный отчет, подобный этому: CSV + подробный файл на рабочем столе, готовый для анализа с помощью фильтров и сводных таблиц.
tasklist /v /fo csv >%userprofile%/Desktop/list.csv
Если вам нужно что-то более лаконичное, с размещенными сервисами и в текстовом формате: LIST + TXT с переадресацией на рабочий стол. Идеально подходит для быстрого просмотра в Блокноте и для удобного обмена с коллегой.
tasklist /svc /fo list >%userprofile%/Desktop/list.txt
Фильтрация невероятно эффективна. Например, вы можете оставить только запущенные приложения и просмотреть их подробно: это помогает сосредоточиться на том, что в данный момент активно, исключая задачи, которые приостановлены или заблокированы в некоторых версиях.
tasklist /v /fi "STATUS eq running"
Ещё один классический способ: определение того, какие процессы загружают конкретную DLL-библиотеку, например, ntdll.dll . Очень полезно для диагностики или при исследовании зависимостей.
tasklist /m ntdll.dll
Также возможна фильтрация по использованию памяти с помощью диапазонов . Например, чтобы увидеть процессы, использующие более 15000 КБ и менее 19000 КБ ОЗУ, можно объединить две команды /FI и получить именно тот сегмент, который вас интересует.
tasklist /fi "memusage gt 15000" /fi "memusage lt 19000"
Ещё один повторяющийся шаблон включает в себя объединение результатов : вывод файлов notepad.exe и firefox.exe с помощью двух последовательных вызовов с использованием оператора & , что позволяет отобразить оба результата на экране за один проход.
tasklist /fi "IMAGENAME eq notepad.exe" & tasklist /fi "IMAGENAME eq firefox.exe"
Вам нужны CSV-файлы непосредственно в консоли, но только для процессов с PID > 1000 ? Нет проблем: с помощью фильтрации и форматирования все готово для перенаправления или обработки в другой программе.
tasklist /v /fi "PID gt 1000" /fo csv
Если вы хотите экспортировать этот CSV-файл, просто добавьте перенаправление. Это очень удобно при составлении отчетов по периметру или сборе данных об инцидентах.
tasklist /v /fi "PID gt 1000" /fo csv > procs.csv
Фильтрация по пользователю и статусу, исключающая системные полномочия, полезна при поиске активных процессов, выполняемых «пользователями» . Такой подход отсеивает системный шум и позволяет сосредоточиться на типичных причинах проблем в офисной среде.
tasklist /fi "USERNAME ne NT AUTHORITY\SYSTEM" /fi "STATUS eq running"
В удаленных сценариях tasklist проявляет себя наилучшим образом. Вы можете запрашивать данные с сервера srvmain , используя свои текущие или пользовательские учетные данные, а также фильтровать данные по загруженным модулям и службам. Имейте в виду, что фильтры WINDOWTITLE и STATUS не применяются при удаленном доступе.
tasklist /s srvmain
tasklist /s srvmain /u maindom\hiropln /p p@ssW23
tasklist /s srvmain /svc /fi "MODULES eq ntdll*"
Небольшой совет: если вы хотите, чтобы окно командной строки оставалось открытым после выполнения команды list, используйте команду CMD /K . Это простой способ «видеть и оставаться» в консоли, не перезапуская её каждый раз.
CMD /K TASKLIST /V
Закрытие задач с помощью taskkill: синтаксис, фильтры и реальные примеры
Когда приложение перестаёт отвечать, потребляет ресурсы без необходимости или открывает слишком много дочерних процессов, taskkill — это решение. Он позволяет завершить процесс по PID или имени образа, принудительно завершить его и, при необходимости, завершить всё дерево дочерних процессов одним модификатором.
Общий синтаксис поддерживает удалённое выполнение с использованием имени пользователя и пароля, нескольких цепочек фильтров, а также выполнение по PID или IMAGE_NAME (с использованием подстановочных знаков для имен, если вы добавляете фильтр). Примечание: удалённое выполнение всегда принудительно, и фильтры WINDOWTITLE/STATUS не применяются.
taskkill <usuario> ]]] { }
Завершение процесса по PID — наиболее прямой подход, снижающий риск случайного завершения других процессов с похожими именами. Вы можете завершить один или несколько процессов с одинаковыми PID одной командой, что полезно при очистке самовоспроизводящихся зомби-процессов .
taskkill /pid 1230
taskkill /pid 1230 /pid 1241 /pid 1253
Завершение работы приложения по имени образа удобно для «выключения» конкретного приложения во всех его процессах, особенно если оно использует многопроцессорную обработку, как большинство современных браузеров. Использование параметра /F принудительно закрывает приложение, а /T удаляет дочерние процессы.
taskkill /f /im notepad.exe
Если вы хотите завершить все процессы с PID больше или равным 1000, независимо от их имени, вы можете использовать фильтр в сочетании с `/im *` . Этот шаблон предназначен для очень специфических целей устранения неполадок; используйте его с умом.
taskkill /f /fi "PID ge 1000" /im *
Фильтры по статусу и заголовку очень полезны для устранения узких мест . Например, вы можете принудительно завершить работу всего, что «не отвечает», исключив окна, заголовок которых не соответствует вашим критериям. Помните, что эти фильтры не работают удаленно.
taskkill /f /fi "STATUS eq NOT RESPONDING"
Существуют специальные процедуры, о которых стоит знать: закрытие wscript.exe прерывает выполнение любых зависших скриптов VBScript, а перезапуск проводника Windows помогает решить проблему, если панель задач или оболочка зависли.
taskkill /f /im wscript.exe
taskkill /f /im explorer.exe & start explorer.exe
Если вы предпочитаете дать системе перед повторным запуском оболочки, добавьте несколько секунд ` timeout` . Это небольшой шаг, который может предотвратить ошибки во время выполнения операций с диском.
taskkill /f /im explorer.exe & timeout /nobreak 05 & start explorer.exe
Ещё один распространённый вариант использования: закрытие консоли и всего, что могло быть запущено ею последовательно. Использование параметра /T гарантирует, что в фоновом режиме не будут выполняться дочерние команды.
taskkill /f /im cmd.exe /t
Taskkill также поддерживает удалённое выполнение с использованием учётных данных, что крайне важно, когда сервер перегружен ресурсоёмким процессом при запуске . Использование подстановочных знаков позволяет указывать несколько исполняемых файлов с похожими именами, например, "note*", чтобы найти Блокнот и другие связанные программы.
taskkill /s srvmain /u maindom\hiropln /p p@ssW23 /fi "IMAGENAME eq note*" /im *
Если вам необходимо действовать в соответствии с критериями безопасности, вы также можете завершить только тот процесс, который запустил систему ( пользователь NT AUTHORITY\SYSTEM ), чтобы избежать ненужного закрытия пользовательских инструментов.
taskkill /f /fi "USERNAME eq NT AUTHORITY\SYSTEM" /im notepad.exe
А если вам нужно что-то еще более простое, есть tskill , который позволяет завершать процессы на уровне сессии (менее гибкий, чем taskkill, но полезный в старых или очень ограниченных средах). Администраторы могут использовать его для процессов в других сессиях.
tskill 1230
tskill explorer /id:1
Автоматизируйте выключение при запуске Windows с помощью пакетных файлов
В некоторых ситуациях полезно завершать процессы сразу после входа в систему, например, чтобы отключить ненужные службы, препятствующие запуску. Это можно сделать с помощью простого пакетного файла в папке «Автозагрузка» без использования планировщика задач.
Создайте .bat-файл с необходимыми строками для команды taskkill и переместите его в папку автозагрузки пользователя. Вы можете легко открыть эту папку, набрав shell:Startup в диалоговом окне «Выполнить» (Win+R) и подтвердив действие.
@echo off
taskkill /f /im proceso1.exe
taskkill /f /im proceso2.exe
taskkill /f /im proceso3.exe
Другие способы вывода списка: WMIC, query и qprocess
Для углубленного анализа и экспорта необработанных данных WMIC — это просто находка, дополняющая инструменты обнаружения вредоносных процессов . Вы можете выбрать интересующие вас столбцы (заголовок, командная строка, PID и т. д.) и экспортировать их в файл на диске для последующего анализа или включения в отчет.
WMIC /OUTPUT:C:\procs.txt PROCESS get Caption,Commandline,Processid
Кроме того, с помощью команды `query` и её псевдонима `qprocess` легко увидеть, кто что запускает, в какой сессии и с каким PID. Это очень полезно на серверах со службами удалённого рабочего стола, где каждая сессия может иметь свою собственную ферму активных процессов.
query process *
query process /id:1
Этот набор команд отображает, помимо прочих данных, пользователя-владельца, имя сессии, идентификатор сессии, имя процесса и PID. Вместе они обеспечивают многосессионный обзор , который также может отображать команда tasklist, но с особым акцентом на службы терминалов.
Управление службами с помощью sc: создание, запрос, запуск и удаление
Для управления системными службами команда `sc` является прямым путем к диспетчеру служб (Services.msc ). С ее помощью можно создать новую службу, изменить ее описание, запустить или остановить ее, приостановить ее работу или удалить записи службы в реестре. Она также работает удаленно, если перед командой поставить символ `\\`.
Создать тестовую службу с автоматическим запуском очень просто: достаточно указать символическое имя, путь к исполняемому файлу и тип запуска. Обратите внимание на пробелы после знаков равенства: они важны в `sc`, поэтому придерживайтесь точного синтаксиса.
sc create NuevoServicio binpath= c:\windows\system32\NuevoServicio.exe start= auto
Для этого на удалённом хосте перед именем машины укажите имя машины. После этого все остальные команды (запуск, остановка, удаление) будут работать точно так же с этим именем службы.
sc create \\miservidor NuevoServicio binpath= c:\windows\system32\NuevoServicio.exe start= auto
Запуск, остановка или изменение административного статуса вновь созданной службы — простая задача. Часто эти команды комбинируются с tasklist/taskkill, когда служба запускает проблемные дочерние процессы.
sc start NuevoServicio
sc stop NuevoServicio
sc pause NuevoServicio
Для аудита очень полезен запрос `sc query` в различных его вариантах: активные службы, все службы, интерактивные службы или конкретная служба с указанием ее статуса. Этот вид дополняет `tasklist /svc`, когда вам нужна информация о статусе и типе в режиме реального времени .
sc query
sc query type= service
sc query state= all
sc query NuevoServicio
sc query type= service type= interact
А когда служба больше не нужна, вы можете удалить её из реестра простым удалением. Имейте в виду, что её необходимо остановить; в противном случае операция завершится неудачей или останется в состоянии ожидания, пока не будут освобождены ресурсы.
sc delete NuevoServicio
Помощь, поддерживаемые фильтры и нюансы удаленного режима
Обе команды, tasklist и taskkill, отображают очень подробную справку непосредственно из консоли. Уделите немного времени, чтобы прочитать её: вы увидите поддерживаемые фильтры, такие как PID (eq, ne, gt, lt, ge, le), IMAGENAME (eq, ne), USERNAME , MEMUSAGE , MODULES или WINDOWTITLE , а также значения статуса, такие как RUNNING, NOT RESPONDING или UNKNOWN (в некоторых версиях также SUSPENDED).
Следует помнить несколько правил: символ подстановки * для /IM принимается только при применении фильтра; в удалённом режиме автодополнение всегда принудительно выполняется, а фильтры WINDOWTITLE и STATUS не оцениваются. Если вы собираетесь работать удалённо, убедитесь, что у вас есть действительные учётные данные , что брандмауэр разрешает необходимую связь и что службы RPC/WMI запущены.
Чтобы сохранить справку в файл и обратиться к ней позже, не теряясь в консоли, помните, что вы можете перенаправить вывод в текстовый файл на рабочем столе, что особенно полезно при документировании внутренней процедуры или обмене сценариями выполнения с командой.
TASKLIST /? >%userprofile%/Desktop/uso_tasklist.txt
TASKKILL /? >%userprofile%/Desktop/uso_taskkill.txt
Практические примеры ежедневного администрирования
Типичные процедуры : мониторинг ресурсоемких процессов, выявление общих DLL-библиотек и подготовка CSV-файла для последующего анализа — все это распространенные задачи. Здесь представлен набор быстрых операций, основанных на вышеописанном и готовых к комбинированию и настройке в соответствии с вашей средой.
Создание подробного списка и сохранение консоли открытой после этого полезно для мониторинга в реальном времени без закрытия окна. Сочетание CMD /K с tasklist обеспечивает удобный рабочий процесс.
CMD /K TASKLIST /V
Найдите все процессы, в которых загружен модуль с заданным шаблоном. Подстановочный знак в конце имени DLL-файла позволяет охватить различные версии или варианты одной и той же системной библиотеки.
tasklist /m ntdll*
Сводный список двух очень распространенных приложений, позволяющий быстро увидеть, сколько экземпляров у вас открыто и какую память они используют. Это может дать вам представление о том, не происходит ли чрезмерная многопроцессорность или не запущены ли вкладки браузера без разбора.
tasklist /fi "IMAGENAME eq notepad.exe" & tasklist /fi "IMAGENAME eq firefox.exe"
Запрет доступа по учётным данным и шаблону имени изображения на удалённом сервере. Очень полезно в корпоративной среде, где удалённый рабочий стол часто не отвечает из-за цепочек офисных процессов.
taskkill /s srvmain /u maindom\hiropln /p p@ssW23 /fi "IMAGENAME eq note*" /im *
А если вы хотите строго избирательно обрабатывать процессы по их источнику, завершайте только те, которые были запущены системной учетной записью. Этот фильтр очень эффективен при исследовании поведения служб в связи с пользовательскими процессами.
taskkill /f /fi "USERNAME eq NT AUTHORITY\SYSTEM" /im notepad.exe
Советы по безопасности и передовой опыт
Избегайте завершения системных процессов без предварительной проверки их работоспособности; это может привести к нестабильности или потере данных. Перед завершением процесса определите его с помощью команды `tasklist /v` и, если возможно, попробуйте выполнить обычное завершение работы через интерфейс. Используйте команду ` /F` только в тех случаях, когда альтернативы нет. Перед продолжением ознакомьтесь со списком служб Windows 11, которые не следует отключать .
При удаленной работе используйте учетные записи с минимально необходимыми правами, а если вы управляете несколькими машинами, рассмотрите возможность использования скриптов, которые будут регистрировать, что было закрыто и когда. Перенаправляйте вывод в CSV или TXT, чтобы оставить след, и защищайте файлы, содержащие пароли или учетные данные, с той же тщательностью, что и секретные данные для производственных целей.
Наконец, помните, что иногда самый быстрый способ — это графический интерфейс: откройте Диспетчер задач и вручную закройте проблемный процесс. Консоль отлично подходит для автоматизации, точной диагностики и повторяемых действий ; графический интерфейс приходит на помощь, когда вам нужен быстрый щелчок мышью.
К настоящему моменту вы уже освоили инвентаризацию, фильтрацию и завершение процессов с помощью tasklist и taskkill, а также создание, запрос и удаление служб с помощью sc, как локально, так и удаленно. Используя примеры и предупреждения из этой статьи, вы сможете создавать собственные скрипты обслуживания, реагировать на сбои за считанные секунды и генерировать качественные отчеты в формате CSV или TXT для своей команды, всегда придерживаясь принципа минимального вмешательства и максимального контроля над тем, что работает в ваших системах.
Страстный писатель о мире байтов и технологий в целом. Мне нравится делиться своими знаниями в письменной форме, и именно этим я и займусь в этом блоге: покажу вам все самое интересное о гаджетах, программном обеспечении, оборудовании, технологических тенденциях и многом другом. Моя цель — помочь вам ориентироваться в цифровом мире простым и интересным способом.