- Управление процессами Windows через CMD
- Управление приложениями, процессами и производительностью
- Примеры управления процессами через командную строку
- Анализ выполняемых процессов в командной строке
- Мониторинг процессов и использования системных ресурсов
- Останов процессов в командной строке
- Системные и пользовательские процессы
- Управление процессами с помощью PowerShell
- Get-Process – получение списка запущенных процессов
- Start-Process, Stop-Process: запуск и остановка процессов из PowerShell
- PowerShell: управление процессами на удаленном компьютере
- Основные системные процессы Windows 10 и их назначение
- Для чего знать названия процессов
Управление процессами Windows через CMD
Основой работы каждого системного администратора является мониторинг операционных систем и обеспечение нормальной работы всех процессов — по крайней мере такой, насколько можно ожидать. Внимательное наблюдение за журналами событий помогает выявлять и отслеживать проблемы в приложениях, безопасности и важных службах. Обнаружив или предполагая проблему, админ должен докопаться до ее причины и устранить. Точное определение причины проблемы предотвратит ее повторное появление.
Управление приложениями, процессами и производительностью
Всякий раз, когда операционная система или пользователь запускает службу, приложение или команду, Microsoft Windows запускает один или более процессов для управления соответствующей программой. Несколько утилит командной строки упростят вам мониторинг программ и управление ими. К этим утилитам относятся:
- Pmon (Process Resource Manager) — показывает статистические данные по производительности, включая использование памяти и процессора, а также список всех процессов, выполняемых в локальной системе. Позволяет получать детальные «снимки» задействованных ресурсов и выполняемых процессов. Pmon поставляется с Windows Resource Kit;
- Tasklist (Task List) — перечисляет все выполняемые процессы по имени и идентификатору процесса, сообщает информацию о сеансе пользователя и занимаемой памяти;
- Taskkill (Task Kill) — останавливает выполнение процесса, заданного по имени или идентификатору. С помощью фильтров можно останавливать процессы в зависимости от их состояния, номера сеанса, процессорного времени, занимаемой памяти, имени пользователя и других параметров.
Примеры управления процессами через командную строку
Анализ выполняемых процессов в командной строке
При помощи утилиты командной строки Tasklist можно проверить процессы, работающие в локальной или удаленной системе. Tasklist позволяет:
- получить идентификатор процесса, его состояние и другие важные сведения о процессах в системе;
- увидеть зависимости между выполняемыми процессами и службами, настроенными в системе;
- просмотреть список DLL, задействованных выполняемыми в системе процессами;
- использовать фильтры для включения или исключения процессов, показываемых Tasklist.
Пример: tasklist — команда выводит список запущенных в операционной системе процессов.
Мониторинг процессов и использования системных ресурсов
Process Resource Monitor (Pmon) показывает «моментальный снимок» используемых системных ресурсов и выполняемых процессов. После запуска (вводом pmon в командной строке) эта утилита собирает информацию об использовании ресурсов и выполняемых процессах в локальной системе и выводит результаты в консольное окно. Статистика автоматически обновляется каждые пять секунд. Pmon продолжает работу, пока вы не нажмете клавишу Q для выхода; нажатие любой другой клавиши приводит к обновлению информации.
Останов процессов в командной строке
Чтобы остановить процессы в локальной или удаленной системе, применяйте утилиту командной строки Taskkill. Процесс можно остановить по его идентификатору при помощи параметра /Pid или по имени образа
Пример: taskkill /IM notepad.exe — завершает работу программы блокнот.
Системные и пользовательские процессы
Обычно процесс, запускаемый операционной системой, называется системным, а процесс, запускаемый пользователем, — пользовательским. Большинство пользовательских процессов выполняется в интерактивном режиме. То есть пользователь запускает процесс непосредственно при помощи клавиатуры или мыши. Если программа активна, связанный с ней интерактивный процесс контролирует клавиатуру и мышь до тех нор, пока вы не переключите управление, завершив эту программу или выбрав другую. Процесс, получивший контроль над клавиатурой и мышью, называют активным.
Процессы могут работать и в фоновом режиме независимо от сеансов зарегистрированных пользователей. Фоновые процессы не имеют контроля над клавиатурой, мышью или другими устройствами ввода и обычно запускаются операционной системой. Но с помощью Task Scheduler (Планировщик заданий) пользователи тоже могут запускать процессы в фоновом режиме, и эти процессы способны работать независимо от того, зарегистрирован ли пользователь в системе.
Управление процессами с помощью PowerShell
PowerShell предоставляет широкие возможности управления процессами на локальном или удаленном компьютере. С помощью PowerShell можно получить список запущенных процессов, приостановить зависший процесс, найти процесс по заголовку окна, запустить новый процесс в скрытом или интерактивном режиме.
Список доступных командлетов управления процессами в Windows 10 можно вывести так:
Get-Command –Noun Process
- Get-Process – получить список запущенных процессов;
- Start-Process – запустить процесс/программу;
- Stop-Process – принудительно остановить процесс;
- Debug-Process – используется для отладки процессов;
- Wait-Process – используется для ожидания окончания процесса.
Get-Process – получение списка запущенных процессов
Командлет Get-Process позволяет вывести список запущенных процессов на локальном компьютере.
По-умолчанию выводятся следующие свойства запущенных процессов:
- Handles – количество дескрипторов ввода — вывода, которые отрыл данный процесс;
- NPM(K) — Non-paged memory (невыгружаемый пул). Размер данных процесса (в Кб.), которые никогда не попадают в файл подкачки на диск;
- PM(K) – размер памяти процесса, которая может быть выгружена на диск;
- WS(K) – размер физической памяти в Кб, используемой процессом (working set).
- CPU(s) – процессорное время, использованное процессом (учитывается время на всех CPU);
- ID — идентификатор процесса;
- SI (Session ID) – идентификатор сеанса процесса (0 — запущен для всех сессий, 1 – для первого залогиненого пользователя, 2 — для второго и т.д.);
- ProcessName – имя процесса.
Чтобы получить все свойства нескольких процессов:
Get-Process winword, notep* | Format-List *
Можно вывести только определенный свойства процессов. Например, имя (ProcessName) время запуска (StartTime), заголовок окна процесса (MainWindowTitle), имя исполняемого файла (Path) и наименование разработчика (Company):
Get-Process winword, notep* | Select-Object ProcessName, StartTime, MainWindowTitle, Path, Company|ft
Вывести список запущенных процессов пользователя с графическими окнами (в список не попадут фоновые и системные процессы):
Get-Process | Where-Object <$_.mainWindowTitle>| Format-Table Id, Name, mainWindowtitle
С помощью параметра IncludeUserName можно вывести имя пользователя (владельца), который запустил процесс:
Get-Process -Name winword -IncludeUserName
С помощью Where-Object можно выбрать процессы в соответствии с заданными критериями. Например, выведем все процессы, которые используются более 200 Мб оперативной памяти, отсортируем процессы в порядке убывания используемого объема RAM, размер памяти из Кб преобразуем в Мб:
Как мы уже говорили ранее командлет Get-Process в параметре CPU содержит время использования процессора конкретным процессом в секундах. Чтобы отобразить процент использования CPU процессами (по аналогии с Task Manager), используйте такую функцию:
function Get-CPUPercent
<
$CPUPercent = @<
Name = ‘CPUPercent’
Expression = <
$TotalSec = (New-TimeSpan -Start $_.StartTime).TotalSeconds
[Math]::Round( ($_.CPU * 100 / $TotalSec), 2)
>
>
Get-Process | Select-Object -Property Name, $CPUPercent, Description | Sort-Object -Property CPUPercent -Descending | Select-Object -First 20
>
Чтобы найти зависшие процессы (которые не отвечают), выполните команду:
Start-Process, Stop-Process: запуск и остановка процессов из PowerShell
Чтобы запустить новый процесс с помощью PowerShell используется команда:
Start-Process -FilePath notepad
Если каталог с исполняемым файлом отсутствует в переменной окружения $env:path, нужно указать полный путь к файлу:
Start-Process -FilePath ‘C:\distr\app.exe’
Можно запустить программу и передать ей аргументы:
Start-Process -FilePath ping -ArgumentList «-n 10 192.168.1.11»
С помощью параметра WindowStyle вы можете задать режим запуска окна процесса (normal, minimized, maximized, hidden). Например, чтобы запустить программу в максимально развернуом окне и дождаться завершения процесса, выполните команду:
Start-Process -FilePath tracert -ArgumentList «192.168.1.11» –wait -windowstyle Maximized
С помощью командлета Stop-Process можно завершить любой процесс. Например, чтобы закрыть все запущенные процессы notepad:
Stop-Process -Name notepad
По-умолчанию не запрашивается подтверждение завершения процесса. Закрываются все процессы, которые соответствуют указанным критериям. Чтобы запросить подтверждение завершения для каждого процесса, добавьте –Confirm.
Stop-Process -Name notepad.exe -Confirm
(Get-Process -Name notepad).Kill()
Из PowerShell можно принудительно завершить все приложения, которые не отвечают диспетчеру процессов Windows:
Get-Process | where-object <$_.Responding -eq $false>| Stop-Process
PowerShell: управление процессами на удаленном компьютере
С помощью аргумента ComputerName командлет Get-Process позволяет управлять процессами на удаленных компьютерах (должен быть включен и настроен WinRM).
Get-Process -ComputerName dc01, dc02| Format-Table -Property ProcessName, ID, MachineName
Если вы хотите завершить процесс на удаленном компьютере, имейте в виду, что у командлета Stop-Process отсутствует параметр –ComputerName. Для завершения процесса на удаленном компьютере можно использовать такой PowerShell код:
$RProc = Get-Process -Name notepad -ComputerName dc01
Stop-Process -InputObject $RProc
Основные системные процессы Windows 10 и их назначение
С понятием процесса в Windows более или менее знакомы все пользователи хотя бы один раз заглядывавшие в Диспетчер задач . На вопрос, что это такое, процесс, большинство ответят: это такая-то программа или служба. Ответ не совсем правильный, потому что программа — это набор инструкций, представленный в виде исполняемого файла, тогда как под процессом следует понимать набор из закрытого адресного пространства, данных и ресурсов, используемых при выполнении этой самой программы.
Для просмотра запущенных процессов и их управления в Windows 10 предусмотрен Диспетчер задач, опытные юзеры и системные администраторы могут использовать для этих целей более продвинутые программные инструменты вроде Process Explorer — утилиты, позволяющей помимо всего прочего получать информацию об открытых дескрипторах и загруженных библиотеках DLL . Вникать в такие тонкости рядовому пользователю, пожалуй, излишне, но знать названия стандартных процессов ОС очень даже желательно.
Для чего знать названия процессов
Знания эти могут пригодиться в случае необходимости идентификации процесса того или иного приложения и управления им, а также выявления опасного и потенциально нежелательного ПО.
Давайте же познакомимся со стандартными процессами Windows 10 и посмотрим, какую задачу они выполняют в системе. Во встроенном Диспетчере задач запущенные процессы отображаются в двух вкладках — «Процессы» и «Подробности».
В первой вкладке Диспетчер показывает имя процесса, во второй — название исполняемого файла, ID процесса, описание (имя) , принадлежность, состояние и объем потребляемой памяти.
В Windows 10 все процессы делятся на три группы:
В первую группу входят процессы штатных и сторонних прикладных программ, вторую составляют процессы, не имеющие окон, то есть те, которые работают в фоне. Среди них могут встречаться как процессы, запущенные системой (службы) , так и процессы сторонних программ, например, антивирусов. Третью группу составляют собственно процессы операционной системы, обеспечивающие ее нормальное функционирование.
• svchost.exe – системный процесс, отвечающий за управление разными службами, служит своего рода контейнером для подпроцессов, использующих библиотеки DLL . В Диспетчере задач представлен несколькими экземплярами, большинство из которых являются критически важными для работы Windows. Располагается в папке System32 , часто служит мишенью для вирусов.
• lsass.exe – важный системный процесс, отвечающий за авторизацию в системе. Если последняя прошла успешно, он инициирует запуск Проводника с помощью специального маркера. В отличие от svchost.exe , процесс lsass.exe всегда запускается с правами SYSTEM . Для работы системы критически важен. Располагается в папке System32 , часто избирается мишенью для вредоносного ПО.
• explorer.exe – наиболее известный процесс, отвечающий за отображение графической оболочки Windows 10, позволяет осуществлять навигацию. Отключение не приведет к завершению работы системы, но сделает использование GUI невозможным. Запускается процесс из папки Windows , может иметь несколько экземпляров.
• sihost.exe – данный системный хост-процесс участвует в обслуживании инфраструктуры оболочки, позволяет открывать центр действий, различные меню, в том числе меню Пуск. Исполняемый файл запускается из папки System32 .
• ntoskrnl.exe или system – базовый, критически важный процесс ядра операционной системы, отвечающий за работу множества системных функций и драйверов устройств. Завершение процесса System не предусмотрено, функционирование системы без него невозможно. Исполняемый файл располагается в папке System32 .
• wininit.exe – этот процесс управляет автозагрузкой приложений в Windows, кроме того, он запускает ряд важных служб как SCM LSASS и LSM (диспетчер управления службами) . Исполняемый файл располагается в папке System32 . Случаи подмены вирусом не замечены.
• dwm.exe или диспетчер окон десктопа – процесс управляет визуальными эффектами важных элементов оболочки: десктопа, меню, окон и так далее. Запускается из каталога System32 . Вероятность заражения невелика.
• smss.exe – управляет подсистемой менеджера сеансов Windows (сеансом авторизовавшегося юзера) . Инициирует старт процессов Winlogon и Win32 , участвует в установке переменных системы. Для Windows критически важен, файл лежит в директории System32 , вероятность заражения оценивается как высокая.
• services.exe – важный процесс, отвечающий за управление системными службами. Запускается из директории System32 , владельцем является Система. Работа процесса под другим пользователем будет указывать на вероятное заражение или подмену.
• winlogon.exe – отвечает за авторизацию (вход) конкретного юзера в систему и выход из нее. Запускается из папки System32 , случаи заражения и подмены вирусом встречаются нечасто.
• csrss.exe – этот процесс управляет работой консольных приложений, например, командной строкой, является подсистемой компонента клиент-сервер. Исполняемый файл лежит в папке System32 , вероятность заражения оценивается как высокая.
Теперь перейдем к системным процессам, обозначаемых в Диспетчере задач как фоновые.
• RuntimeBroker.exe – один из основных процессов ядра Windows 8.1 и 10, управляющий разрешениями универсальных приложений, к примеру, доступом к камере или микрофону. Каждому запущенному UWP -приложению соответствует свой экземпляр процесса RuntimeBroker . Исполняемый файл находится в каталоге System32 .
• ApplicationFrameHost.exe – еще один процесс, отвечающий за работу UWP -программ. В Windows 10 обеспечивает запуск универсальных приложений в окнах независимо от используемого режима. Процесс может быть закрыт принудительно, но при этом будут закрыты и все запущенные UWP -приложения, включая работающие в фоне. Обитает exe-файл процесса в System32 .
• ctfmon.exe – процесс обеспечивает работу языковой панели, управляет вводом данных. Не является критическим, при завершении пользователем обычно перезапускается автоматически. Исполняемый файл лежит в System32 , случаи использования вирусами редки.
• SecurityHealthService.exe – системная служба, отвечающая в Windows 10 за работу Центра безопасности. Управляется Системой, завершение через Диспетчер задач не предусмотрено. Файл приложения находится в папке System32 .
• spoolsv.exe – процесс, обеспечивающий вывод на печать с использованием принтера и других подобных устройств. Не является особо важным, может быть завершен из Диспетчера задач или отключен в службах. Файл находится в System32 , заражение и использование вирусами маловероятно.
Это основные системные процессы, которые вы можете наблюдать в Диспетчере задач Windows 10.
Впрочем, если у вас есть сомнения по поводу безопасности того или иного процесса, вы всегда можете проверить его на «причастность» к вирусной активности, воспользовавшись утилитой Process Explorer, умеющей получать данные о файле с сервиса VirusTotal .
И еще один момент.
Изучив список процессов в Диспетчере задач, вы наверняка обнаружите процессы, которые не были приведены в нашем списке. Это вполне нормальное явление, поскольку процессы, особенно входящие в категорию «Фоновые» могут принадлежать различным дополнительным системным компонентам, а также драйверам устройств, имеющихся на вашем компьютере.