Управління процесами Windows з командного рядка


Для управління процесами Windows існує багато різних утиліт і додатків. Як правило, для цих цілей командний рядок використовується дуже рідко. Але в деяких випадках, це єдина можливість і інші засоби недоступні. Таке може виникнути при блокуванні стандартних диспетчерів різними вірусами та іншими нехорошими програмами. Тому, буде дуже корисно знати і вміти працювати з процесами через командний рядок.

Щоб керувати процесами, за допомогою можливостей командного рядка, в системі передбачено два спеціальні програми: tasklist і taskkill. З назви можна здогадатися і про їхнє призначення — перше може відображати список всіх запущених процесів на даному комп'ютері, або на віддаленій машині, а друга вміє їх зупиняти. Давайте глянемо, як це працює на практиці.

Введіть у вікні терміналу, tasklist командний рядок видасть весь список робочих процесів на даному комп'ютері.

cmd1-min


Всі дані будуть відображатися в табличній формі, але можна поміняти вид даних в інший формат. Скористайтеся параметром /fo і все відобразиться у вигляді списку (або CSV), а якщо використовувати параметр /v, то в цей список будуть включені більш докладні дані про кожному процесі. Введіть taskliist /v /fo list (без лапок природно) і у вікні повинна з'явитися приблизно така картина.cmd2-min

Зазвичай список виходить чималих розмірів, і щоб не гортати його занадто довго, виконаємо точніший запит. Для цих цілей існує параметр /fi, здатний уточнити пошук процесів використовуючи фільтри. Для прикладу, введемо команду, яка відображає всі процеси, запущені від імені користувача user і займають до 40 мегабайт в пам'яті комп'ютера. Команда виглядає наступним чином: tasklist /fi »username eq user» /fi »memusage le 40000». А на малюнку нижче представлений результат роботи команди.cmd3-min

Припустимо, ми нашили процеси, які хочемо завершити. Тепер настала черга утиліти «taskkill». Для припинення роботи процесу можна використовувати його ім'я, або ідентифікатор PID, а можна припиняти процеси використовуючи різні фільтри. Для експерименту, ми запустимо кілька вікон програми Блокнот (notepad.exe) і на них випробуємо різні способи.cmd5-min

За допомогою параметра /f процес буде завершено в примусовому порядку, а якщо додати ще ключ /t — завершаться всі інші, які були через нього запущені. Щоб дізнатися більше можливостей, для команд tasklist і taskkill, додайте до них ключ /?. Він відображає повну довідку для цих утиліт. Не будемо забувати про такий потужний засіб, як PowerShell. Ми можемо ним скористатися і прям в цьому ж вікні командного рядка. Щоб переглянути весь список процесів, запустіть команду Get-Process.cmd6-min

Щоб знову не ритися у всіх знайдених процесах, можна задати фільтр для отримання окремих, відповідних критеріям, процесів. Для цього існує команду Where-Object. Давайте отримаємо табличку з процесами, завантажують процесор на даному комп'ютері і складемо їх у порядку зростання навантаження. Скористаємося командою наступного виду: Get-Process | where $_.cpu -gt 0 | sort cpu

Результат буде мати приблизно такий вигляд:

cmd9-min

Тут можна отримати повну інформацію про будь запущеному процесі. Зараз ми дізнаємося список всіх властивостей процесу cmd. Це можна зробити за допомогою такої команди:

Get-Process -Name cmd | Get-Member -Membertype property

cmd7-min

Виведемо тільки потрібні властивості. Наприклад, залишимо тільки ім'я, ідентифікатор процесу, шлях до виконавчого файлу, підключені модулі і час, коли процес був запущений. Все це ми виводимо списком, за допомогою такої команди:

Get-Process -Name cmd | Format-List name, id, path, modules, starttime

cmd8-min

Завдяки цьому ми дізнаємося про те, хто запустив процес, як сильно він вантажить систему, де розташовується його файл і ще купу різної, корисної і не дуже інформації.

Щоб зупинити процес через PowerShell використовуйте спеціальний командою Stop-Process. Для того, щоб вказати потрібний процес для завершення, використовуйте його ім'я, або ідентифікатор. Наприклад, можна по конвеєру припинити роботу блокнота:

Get-Process | where $_.name -match ?notepad? | Stop-Process

cmd10-min

Для роботи з процесами на іншому, віддаленому комп'ютері необхідно використовувати зовсім іншою командою — Get-WmiObject. Зараз подивимося, які процеси запущені на комп'ютері з ім'ям «PC»:

Get-WmiObject win32_process -ім'я комп'ютера PC | ft name, processid, description

cmd11-min

Щоб дізнатися більше інформації і різних ключів, для роботи з процесами через PowerShell, використовуйте вбудовану довідку. Запустіть команду Get-Help «ім'я команди» і з'явиться довідка за вказаним параметром. Є ще дві додаткові утиліти, здатні виконувати операції з процесами. Ними є Pslist і Pskill. Спочатку їх в системі немає, вони входять в пакет PSTools.

Самі по собі ці програми не потребують встановлення. Їх достатньо скопіювати в будь-яке місце на вашому жорсткому диску. Щоб запустити, зайдіть в папку, де вони зберігаються, та активуйте потрібною командою.cmd12-min

Відповідно, утиліта Pslist здатна вивести інформацію про процеси, запущених на комп'ютері. Можна вибірково знаходити окремі процеси і виводити їх на екран. Давайте продовжимо знущатися над запущеним блокнотом і переглянемо про нього інформацію командою pslist notepad -x.cmd13-min

Цікавою функцією Pslist є можливість роботи в режимі диспетчера процесів. Вся інформація постійно оновлюється і можна задавати відповідний інтервал одержання актуальних даних. За цей режим відповідає ключ -s. Припустимо, необхідно встановити режим диспетчера з оновленням кожні десять секунд, ця команда буде виглядати так: tasklist -s -r 10

cmd14-min

Завершити будь-який процес можна за допомогою утиліти Pskill. Введіть цю команду і ідентифікатор процесу, або його ім'я. На малюнку нижче можете подивитися, як це буде виглядати у випадку з бідним блокнотом.

cmd15-min

Додаткову інформацію, у вигляді довідки, можна відкрити додатковим параметром /?

Найголовніший момент — командний рядок, у всіх випадках, повинна бути запущена від імені адміністратора, інакше нічого не вийде. Але якщо зіткнетеся з якимись складними проблемами, або виникнуть питання, то завжди можна цим поділитися в коментарях до даної статті, і ми разом спробуємо розібратися.