В этой статье мы рассмотрим две утилиты командной строки, который служат для работы с процессами, а именно, утилиту tasklist и taskkill.
Командная строка процессы, утилита tasklist
Утилита командной строки tasklist служит для вывода списка процессов Windows (пример использования: "Получение списка процессов средствами командной строки и сервера Windows Script Host")
tasklist[.exe] [/s <система>] [/u [<домен>\]<пользователь> [/p <пароль>]] [/fo {TABLE|LIST|CSV}] [/nh] [/fi фильтр [/fi фильтр2 [ ... ]]] [/m <модуль> | /svc | /v]
Параметры:
/s <система> - данный ключ позволяет задать имя или же IP-адрес удаленной системы. При отсутствии ключа, информация извлекается для текущей системы.
/u [<домен>\]<пользователь> - позволяет задать имя домена/пользователя, под разрешением учетной записи которого должна выполниться команда. При отсутствии, принимаются права текущего пользователя, того, что запустил утилиту.
/p <пароль> - данный ключ актуален лишь в том случае, если прису
тствует параметр /u. Ключ задает пароль учетной записи.
/fo {TABLE|LIST|CSV} – тут мы можем задать формат выходных данных: TABLE – таблица, LIST – список и CSV – таблица в формате csv файла. При отсутствии ключа, данные выводятся в формате TABLE. Командная строка и процессы.
/nh – отключение вывода заголовка для столбца, ключ актуален лишь тогда, когда для параметр /fo установлены значения TABLE или CSV
/fi – данный ключ позволяет задать фильтры, по которым будет отсеиваться список выводимых процессов в командной строке. Фильтры можно указывать через запятую, в кавычках прописываем имя фильтра, оператор и значение.
Виды фильтров:
- STATUS (состояние) – eq, ne - RUNNING | NOT RESPONDING
- IMAGENAME (имя образа) – eq, ne – имя процесса
- PID (ID процесса) - eq, ne, gt, lt, ge, le – значение идентификатора процесса PID
- SESSION (сеанс) - eq, ne, gt, lt, ge, le – номер сессии
- SESSIONNAME (имя сеанса) - eq, ne – имя сессии
- CPUTIME (неизвестно!!!) - eq, ne, gt, lt, ge, le – время ЦП в формате hh (часы):mm (минуты):ss (секунды).
- MEMUSAGE (память) - eq, ne, gt, lt, ge, le – потребляемое значение памяти в КБ
- USERNAME (пользователь) - eq, ne – задает имя пользователя в формате [<домен>\<пользователь>]
- SERVICES(службы) - eq, ne – имя службы
- WINDOWTITLE - eq, ne – название окна
- MODULES (модули) - eq, ne – название DLL библиотеки
Значения операторов:
- eq – определяет равенство заданному значению
- ne - определяет неравенство заданному значению
- gt - Больше указанного числа
- lt - Меньше указанного числа
- ge - Больше или равно указанному числу
- le - Меньше или равно указанному числу
Обратите внимание, что при указании имени фильтра, я указал рядом в круглых скобках его русское значение (при возможности). Так как в русской сборке Windows умудрились сделать перевод, и при вызове фильтра на английском, возникает ошибка CMD “Фильтр поиска не опознан”.
/m <модуль> - присутствие данного ключа включает отображение всех процессов в командной строке, использующих заданную библиотеку (фильтр MODULES). Не используется совместно с параметрами /svc и /v
/svc – определяет отображение служб для каждого процесса, актуален, если параметр /fo имеет значение TABLE. Не используется совместно с параметрами /m и /v
/v – включает отображение подробной информации. Не используется совместно с параметрами /svc и /m.
Командная строка процессы, утилита tasklist
Утилита taskkill позволяет завершить работу заданного процесса или группы, завершение может осуществляется по имени процесса или по его идентификатору
TASKKILL [/S <система> [/U <пользователь> [/P [<пароль>]]]]{ [/FI <фильтр>] [/PID <процесс> | /IM <образ>] } [/F] [/T]
Фактически, значение параметров те же, что и для утилиты tasklist, кроме:
/F – задает принудительное завершение заданного процесса
/PID <процесс> - тут мы можем указать идентификатор того процесса, который нужно убить.
/IM <образ> - задаем имя образа, для определения всех процессов, можно прописать символ подстановки '*'.
/T – если данный ключ включен, то произойдет завершение заданного процесса в командной строке и всех его дочерних.
Хорошо, как известно, для вывода справки по заданной утилите CMD, нужно прописать ее имя и параметр /?. Для направления данных в файл используется символ “>” после которого следует путь к файлу, в который будут записываться данные. Но, есть одна проблема – нужно определить правильную кодировку, иначе мы получим крякозябы. Дело в том, что некоторые утилиты уперто не хотят перенаправить данные в файл в той кодировке, которую мы прописали с помощью утилиты chcp. И поэтому, нужно писать отдельный батник.
Я не силен в командной строке, поэтому на просторах интернета нашел следующий пример:
@echo off chcp 866 >nul tasklist/? >test_bat.txt for /f "tokens=*" %%a in (test_bat.txt) do call :convert %%a goto :eof :convert chcp 1251 >nul echo %*>>tasklist.txt chcp 866 >nul |
Сохраните данный текст в файле с расширением bat и запустите, в итоге вы получите в текущем каталоге два текстовых файла, один с крякозябрами, а другой в кодировке 1251.
Спасибо за внимание. Автор блога Владимир Баталий