Что видно в таблице без параметров
Введите tasklist в командной строке, и Windows напечатает список всех процессов текущего компьютера. Права администратора для этого не нужны. Столбцов пять: имя образа (то есть имя исполняемого файла), PID, имя сеанса, номер сеанса и объём используемой памяти.
Для чего это нужно, если есть диспетчер задач? Вывод tasklist можно перенаправить в файл, отфильтровать, вставить в обращение в поддержку, обработать скриптом. Кроме того, команда работает там, где графический интерфейс недоступен: в удалённом сеансе или там, где доступна только консоль.
PID — это числовой идентификатор процесса. Он уникален только на время жизни процесса: после завершения номер может достаться другому. Поэтому сверяйте PID с именем, прежде чем передавать его другой команде.
Заголовок «Имя сеанса» в таблице показывает, к какому сеансу относится процесс. Службы Windows обычно работают в сеансе с именем Services, а программы пользователя в сеансе Console или в сеансе удалённого рабочего стола. Это помогает отличить процессы, запущенные вами, от фоновых.
Фильтры /FI: имя, PID, статус
Ключ /FI задаёт условие в кавычках в формате «поле оператор значение». Поддерживаются операторы eq (равно), ne (не равно), gt, lt, ge и le для числовых полей. Среди полей, описанных в справке: IMAGENAME, PID, STATUS, SESSION, USERNAME, MEMUSAGE, SERVICES, WINDOWTITLE.
| Что нужно | Пример |
|---|---|
| Найти процесс по имени | tasklist /FI "IMAGENAME eq notepad.exe" |
| Найти по PID | tasklist /FI "PID eq 1234" |
| Процессы, не отвечающие на запросы | tasklist /FI "STATUS eq NOT RESPONDING" |
| Процессы, занимающие много памяти | tasklist /FI "MEMUSAGE gt 500000" |
Значение MEMUSAGE задаётся в килобайтах, поэтому число 500000 соответствует примерно полумиллиарду байт. Несколько фильтров можно указать подряд: каждый новый /FI добавляет условие, и вывод показывает только процессы, подходящие под все условия сразу.
Условие целиком, включая значение с пробелами вроде NOT RESPONDING, берут в одну пару двойных кавычек. Названия полей и значений в справке записаны латиницей, и в русской версии Windows их тоже вводят латиницей, как показано в таблице.
Если ничего не найдено, команда выведет сообщение, что задач, соответствующих условию, нет. Это не ошибка, а просто пустой результат.
Фильтр по пользователю может пригодиться на компьютере с несколькими учётными записями: условие USERNAME eq с именем в формате компьютер\пользователь оставит только процессы выбранной записи. Имена в фильтрах нужно писать в том виде, в котором их показывает ключ /V.
Службы внутри процесса: ключ /SVC
Процесс svchost.exe в списке встречается много раз, и по имени не понять, какая именно служба за ним скрывается. Ключ /SVC добавляет столбец со службами, которые работают внутри каждого процесса. Так можно отличить, скажем, один экземпляр svchost.exe от другого и сопоставить его с конкретной службой Windows.
Команда tasklist /SVC /FI "PID eq 1234" покажет службы только для выбранного PID. Это удобно, когда процесс нагружает диск или сеть, а в диспетчере задач виден лишь общий хост.
Ключ /V (подробный вывод) добавляет состояние, имя пользователя, время процессора и заголовок окна. Он работает медленнее, потому что собирает больше сведений. Если нужны и службы, и подробности, запустите команду дважды с разными ключами.
Если нужно найти, в каком процессе работает конкретная служба, подойдёт фильтр по полю SERVICES: tasklist /SVC /FI "SERVICES eq имя_службы". Имя службы здесь служебное, а не отображаемое в списке служб. Узнать служебное имя можно в свойствах службы в соответствующей оснастке.
Формат вывода и сохранение в файл
Ключ /FO задаёт формат: TABLE (по умолчанию), LIST или CSV. Для сохранения и последующей обработки удобен CSV: tasklist /FO CSV /NH > processes.csv. Ключ /NH убирает строку заголовков, и в файле остаются только данные.
Файл в формате CSV откроется в электронной таблице, и список можно отсортировать по памяти или по имени. Формат LIST выводит каждое поле на отдельной строке и лучше читается глазами, когда столбцов много.
- tasklist > list.txt: сохранить обычную таблицу;
- tasklist /FO LIST /V > details.txt: подробный вывод по полям;
- tasklist | findstr /I chrome: быстрый поиск по подстроке без точных фильтров;
- tasklist /FO CSV /NH: данные для скрипта без заголовка.
Сохранённый до и после проблемы список помогает сравнить, какие процессы появились. Но по одному названию процесса делать вывод об опасности нельзя: для этого нужна проверка расположения файла и подписи.
Электронную таблицу удобно использовать для сравнения двух снимков. Сохраните список до установки программы и после, затем отсортируйте по имени и сверьте строки. Так видно, какие процессы добавились, и это проще, чем сравнивать глазами длинные списки в окне консоли.
Проверка подозрительного процесса и удалённый компьютер
Увидели незнакомое имя? Не завершайте его сразу. Сначала выясните, откуда запущен файл. В диспетчере задач через контекстное меню можно открыть расположение файла, а в PowerShell путь выводит команда Get-Process с полем Path. Системные процессы обычно лежат в каталоге Windows или Program Files, а не во временных папках профиля.
Ключ /S позволяет запросить список у удалённого компьютера, а /U и /P задают учётные данные. Для этого на целевой машине должен быть разрешён удалённый доступ к управлению и нужны права. В домашней сети такое используется редко, а в организациях настройки определяет администратор.
Когда процесс определён и вы решили его закрыть, перейдите к странице про taskkill. А если нужно понять, какая программа держит сетевой порт, пригодится разбор netstat с поиском по порту.
Если задача состоит в поиске процесса, который тормозит систему, tasklist даёт лишь моментальный снимок. Он не показывает нагрузку на процессор во времени, поэтому для такой диагностики лучше подходит диспетчер задач или монитор ресурсов, а tasklist помогает быстро записать, что было запущено в момент проблемы.