Утилиты tasklist и taskkill — работа с процессами в командной строке

Утилиты tasklist и taskkill — работа с процессами в командной строке Командная строка

В этой статье мы рассмотрим две утилиты командной строки, который служат для работы с процессами, а именно, утилиту 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.

Оцените статью
Технологии программирования и ведение блога
Добавить комментарий