Управління процесами з командного рядка.
Способів управляти процесами в Windows предостатньо, і командний рядок займає в них далеко не перше місце. Однак іноді бувають ситуації, коли всі інші інструменти крім командного рядка недоступні, наприклад деякі шкідливі програми можуть блокувати запуск Task Manager і подібних йому програм.Та й просто для загального розвитку корисно знати способи управління комп'ютером з командного рядка.
Для управління процесами в командному рядку є дві утиліти - tasklist і taskkill. Перша показує список процесів на локальному або віддаленому комп'ютері, друга дозволяє їх завершити.
Список вийде досить великий, тому спробуємо уточнити запит. Для цього використовуємо ключ/fi, який дозволяє використовувати фільтри для виведення даних, наприклад команда tasklist/fi "username eq user"/fi "memusage le 40000" виводить список процесів користувача user, які споживають не більш 40Мб пам'яті.
Знайшовши процеси, які необхідно завершити, скористаємося командою taskkill. Завершувати процеси можна по імені, ідентифікатором (PID) або задавши умови за допомогою фільтрів. Для прикладу запустимо кілька примірників блокнота (notepad.exe) і спробуємо завершити його різними способами.
Ключ/f завершує процес примусово, а/t завершує всі дочірні процеси.
Повну довідку по командам tasklist і taskkill можна отримати, ввівши їх з ключем /?
Тепер пустимо в хід важку артилерію - PowerShell. Його можна запустити не виходячи з командного рядка.Для отримання списку процесів використовуємо командлет Get-Process.
Щоб не виводити весь список процесів можемо скористатися командлети Where-Object, який задає фільтр для виведеної інформації. Для прикладу виведемо список процесів, які завантажують процесор і відсортуємо їх по зростанню навантаження за допомогою команди:
Get-Process | where {$ _.cpu -gt 0} | sort cpu
За допомогою PowerShell ми можемо отримати будь-яку інформацію про будь-якому процесі. Як приклад візьмемо процес cmd і виведемо список його властивостей командою:
Get-Process -Name cmd | Get-Member -Membertype property
Вибираємо ті властивості, що нам цікаві (в прикладі ім'я і ID процесу, шлях до файлу, що використовуються модулі і час запуску) і виводимо їх у вигляді списку командою:
Get-Process -Name cmd | Format-List name, id, path, modules, starttime
Таким чином ми можемо подивитися коли і ким був запущений процес, скільки він споживає ресурсів, де знаходиться виконуваний файл і ще багато різної інформації.
Для завершення процесу в PowerShell є командлет Stop-Process. Він завершує зазначений процес по його імені чи кодом. Однак ми вчинимо інакше і передамо результат виконання командлета Get-Process по конвеєру:
Get-Process | where {$ _. name -match "notepad"} | Stop-Process
Get-Process не може показати процеси на віддаленому комп'ютері, для цього скористаємося Командлети Get-WmiObject, наприклад подивимося процеси на віддаленому комп'ютері PC командою:
Get-WmiObject win32_process -computername PC | ft name, processid, description
Для більш повного ознайомлення з PowerShell можна скористатися вбудованою довідкою, для виклику довідки потрібно набрати Get-Help "ім'я командлет"
Ну і для повноти огляду розглянемо ще один засіб для управління процесами з командного рядка.Це утиліти Pslist і Pskill що входять до складу пакета PSTools від компанії Sysinternals.
Ці утиліти не вимагають спеціальної установки, досить просто скопіювати їх на диск. Для запуску потрібно зайти в папку з утилітами і ввести в командному рядку необхідну команду.
Pslist може виводити інформацію про процеси по імені або ID, наприклад командою pslist notepad -x виведемо детальну інформацію про наш «багатостраждальному» блокноті.
Особливістю утиліти Pslist є режим task-manager. У цьому режимі інформація автоматично оновлюється, причому можна задати час роботи і інтервал оновлення. Запускається режим ключем -s, наприклад командою tasklist -s -r 10 запускаємо режим програму в режимі task-manager з оновленням раз в 10 сек.
Завершення процесу програмою pskill гранично просто, вводимо команду і ім'я (або ID) процесу і все .
Довідку по утилітам Pslist і Pskill можна подивитися, ввівши команду з ключем /?
І ще, всі маніпуляції з процесами необхідно виконувати з правами адміністратора, для цього командний рядок потрібно запускати з підвищенням привілеїв.П>.