Как в Windows завершить работу зависшей службы. Как остановить, запустить, отключить службы Process Explorer: Завершение зависшего процесса из-под SYSTEM

Как завершить процесс службы Windows, зависшей в статусе stopping (остановка)? Думаю, большинство администраторов Windows, встречалось с ситуациями, когда при попытке остановить (перезапустить) службу из графического интерфейса консоли управления службами (Services.msc), служба зависает намертво и висит в статусе Stopping . После этого вы не можете остановить службу в консоли, т.к. кнопки действий службы становятся недоступными. Самый простой способ – перезагрузить сервер, но это не всегда допустимо. Рассмотрим альтернативный способ, позволяющий принудительно завершить зависшую службу или процесс без необходимости перезагрузки.

Если в течении 30 секунд после попытки остановки службы, она не останавливается, Windows выводит сообщение:

Не удалось остановить службу xxxxxxx Windows на локальном компьютере.
Ошибка 1053. Служба не ответила на запрос своевременно.

Windows Could not stop the xxxxxx service on Local Computer
Error 1053: The service did not respond in a timely fashion.

При попытке остановить такую службу командой: net stop wuauserv, появляется сообщение:

The service is starting or stopping. Please try again letter.

Завершение зависшей службы с помощью TaskKill

Наиболее простой способ завершить зависшую служу – воспользоваться утилитой taskkill . В первую очередь нужно определить PID (идентификатор процесса) нашей службы. В качестве примера возьмем службу Windows Update, ее системное имя wuauserv (имя можно посмотреть в свойствах службы в консоли services.msc).

Довольно часто эта проблема случается , особенно после установки обновлений на Windows Server 2012 R2 / 2008 R2.

Важно . Будьте внимательными. Принудительная отставка процесса критичных служб Windows может привести к BSOD или перезагрузке системы.

В командной строке с правами администратора (это важно, иначе будет ошибка access denied):
sc queryex wuauserv

В данном случае PID процесса - 816.

Чтобы принудительно завершить зависший процесс с PID 816:

taskkill /PID 816 /F

SUCCESS: The process with PID 816 has been terminated.

Данная команда принудительно завершит процесс службы. В дельнейшем можно вернуться в консоль управления службами и вручную стартовать службу (или совсем , если она не нужна).

«Выстрел в голову» зависшей службы можно выполнить и более элегантно, не выполняя ручное определение PID процесса. У утилиты taskkill есть параметр /FI, позволяющий использовать фильтр для выбора необходимых служб или процессов. Вы можете остановить конкретную службу командой:

TASKKILL /F /FI “SERVICES eq wuauserv”

Или можно вообще не указывать имя, службы, завершив все сервисы в зависшем состоянии с помощью команды:

taskkill /F /FI “status eq not responding”

После этого служба, зависшая в статусе Stopping должна остановиться.

Принудительное завершение зависшей службы из PowerShell

Также вы можете использовать PowerShell для принудительной остановки службы. С помощью следующей команды можно получить список служб, находящихся в состоянии Stopping:

Get-WmiObject -Class win32_service | Where-Object {$_.state -eq "stop pending"}

Завершить процесс для всех найденных служб поможет командлет Stop -Process . Объединив обе операции в цикл, получим скрипт, автоматически завершающий все процессы подвисших служб в системе:

$Services = Get-WmiObject -Class win32_service -Filter "state = "stop pending""
if ($Services) {
foreach ($service in $Services) {
try {
Stop-Process -Id $service.processid -Force -PassThru -ErrorAction Stop
}
catch {
Write-Warning -Message " Error. Error details: $_.Exception.Message"
}
}
}
else {
Write-Output "No services with "Stopping".status"
}

Анализ зависших процессов с помощью Resmon

Вы можете определить процесс, из-за которого зависла служба с помощью монитора ресурсов resmon.


Process Explorer: Завершение зависшего процесса из-под SYSTEM

Некоторые процессы, запущенные из-под SYSTEM, не может завершить даже локальный администратора сервера. Дело в том, что у него просто может не быть прав на некоторые процессы или службы. Чтобы завершить такие процесс (службы), вам необходимо предоставить локальной группе Administrators права на службу (процесс), а потом завершить их. Для этого нам понадобятся две утилиты: psexec.exe и ProcessExplorer (доступны на сайте Microsoft).


Автор Виктория Громада задал вопрос в разделе Другие языки и технологии

Как отключить работу антивируса через диспетчер задачь,если пишет,что в доступе отказано? и получил лучший ответ

Ответ от Jide[гуру]
попробуйте отключить "самозащита" антивируса если такова имеется и издевайтесь над ним как хотите!

Ответ от 2 ответа [гуру]

Привет! Вот подборка тем с ответами на Ваш вопрос: Как отключить работу антивируса через диспетчер задачь,если пишет,что в доступе отказано?

Ответ от Ўрий [гуру]
Загружаешься в безопасном режиме - пуск-выполнить-msconfig-в автозагрузке снимаешь галочку с антивируса, перезагружаешься.
После этого удалить можно с помощью Revo Uninstaller Pro или IObit Uninstaller


Ответ от Sergey V. Voronin [гуру]
панель управления -- установка и удаление программ. Если там не выходит, то в службах найти и отключить.
А файл есть, коли в диспетчере значится. Например, через фар-менеджер можно точно посмотреть, как файл данного процесса называется и где находится.


Ответ от Shade [эксперт]
Скорей всего, через диспетчер задач его остановить не получится. Так как большинство современных антивирусов запускаются в качестве служб (service).
Чтобы остановить службу необходимо зайти в окно управления службами (Панель управления -> Администрирование -> Службы) . Найти службу, отвечающую за антивирус и выбрать пункт "остановить" (stop service)

При сбое в работе любой службы Windows нужно либо перезапустить службу, либо перезагрузить систему. Перезагрузка компьютера неудобна, поскольку занимает время и закрывает все окна. Если не получается остановить службу через Панель управления, можно перезапустить службу Windows из командной строки.

Открыть настройки служб Windows можно 4 способами:

  1. Нажать Win+R , в окне Выполнить ввести services.msc и нажать Enter. Откроется Диспетчер служб.
  2. Нажать Пуск , в поиске ввести Службы , открыть настройки.
  3. Открыть Панель управления -> Система и безопасность -> Администрирование -> Службы .
  4. Нажать ПКМ на кнопке Пуск или клавиши Win+X . Перейти в «Управление компьютером -> Службы и приложения -> Службы .

К счастью, от версии к версии Windows этот раздел настроек практически не изменялся. В Windows 7, Vista, 8 и 10 «Службы» будут выглядеть почти одинаково.

Перезапуск через Панель управления

Возможностей стандартных настроек в Панели управления достаточно, чтобы останавливать и запускать системные сервисы. Есть возможность — это немного повысит производительность устройства.

Остановка и повторный запуск служб Windows:

  1. Открыть любым способом окно Службы , найти нужную.
  2. Нажать по нужной службе правой кнопкой мыши и выбрать Перезапустить .
  3. Если кнопка Перезапустить неактивна — нажать Свойства .
  4. Нажать Остановить , дождаться остановки службы.
  5. Нажать на кнопку Запустить .

Если служба зависла или не остановилась — открыть диспетчер задач (Ctrl+Alt+Del) и завершить все процессы, связанные с проблемной службой.

Перезапуск через Командную строку

Если Панель управления не справляется со своими обязанностями, отключить или перезапустить службу можно через Командную строку (cmd.exe). Командная строка должна быть запущена от имени администратора.

Для управления службами существует 4 команды, дублирующие функционал Панели управления:

  • net stopservice — Остановить выбранную службу.
  • net startservice — Запустить.
  • net pauseservice — Приостановить обслуживание.
  • net continueservice — Возобновить обслуживание.

Для работы со службой нужно знать её название. Например, запуск службы Windows Audio будет выполнен по команде net start audiosrv . Здесь audiosrv — системное название службы.

Чтобы его узнать, нужно зайти в свойства. Нужная строка будет в самом верху — «Имя службы». Вывести списком имена всех активных служб можно прямо в Командной строке, введя sc query type= service .

Через консоль можно не только перезапустить службу, но и изменить её тип запуска командой sc config *СЛУЖБА* start= *ТИП_ЗАПУСКА* .

Доступные типы запуска:

  • auto — Автоматически.
  • demand — Вручную (по требованию).
  • delayed-auto — Отложенный запуск.

Например, команда sc config audiosrv start=auto переведет службу Windows Audio в тип запуска Автоматически .

Для полноты нужно упомянуть еще один способ перезапуска — через Диспетчер задач. Для этого нужно нажать комбинацию клавиш Ctrl+Alt+Del (или Ctrl-Shift-Esc), выбрать Диспетчер задач и перейти на вкладку Службы . По нажатию правой кнопки мыши на любой службе появляется контекстное меню, откуда доступна и остановка, и запуск, и перезагрузка.

Я думаю, что большинство пользователей встречались с такой проблемой, как зависание служб в Windows, причем, попытка принудительного завершения такой службы не увенчалась успехом, и она весит в режиме “Stopping” . Из графического интерфейса перезапустить или принудительно завершить службу тоже не удается, а перезагрузка самого сервера, в нашем случае компьютера, не всегда может быть допустимым.

Сейчас мы рассмотрим способ, который поможет вам принудительно завершить процесс, который завис, при этом, само устройство перезапускать не нужно.

Как принудительно завершить зависшую службу?

Итак, как только пройдет 30 секунд и видно, что служба не остановилась, то Windows выведет следующее сообщение:

Быстро и без усилий завершить работу зависшего процесса можно при помощи утилиты . Перед этим вам нужно будет определить PID процесса (службы). В пример мы будем использовать службу , системное имя процесса — wuauserv .

Внимание! Если вы завершите важный процесс, то это может привести к перезагрузке системы или BSOD (экран смерти).

Теперь открываем командную строку с правами админа, если так не сделать, то может выйти ошибка. В командную строку вводим следующее:


Появится сообщение, что служба “Центр обновлений Windows” завершена. Можно потом вернуться в управление службами и там снова запустить процесс, либо вообще его удалить, если вы не пользуетесь им.

Есть еще один метод принудительного завершения процесса, при этом, не нужно узнавать PID. В этом деле нам поможет уже знакомая утилита . Запускаем ее от имени администратора.

Следующая команда поможет нам выявить службы, которые находятся в состоянии stopping:

Get-WmiObject -Class win32_service | Where-Object {$_.state -eq ‘stop pending’}


Теперь нам нужно завершить процесс для найденных нами служб, в этом нам поможет . C помощью следующего скрипта, все подвисшие в системе службы будут завершены:

$Services = Get-WmiObject -Class win32_service -Filter «state = ‘stop pending"»
if ($Services) {
foreach ($service in $Services) {
try {
Stop-Process -Id $service.processid -Force -PassThru -ErrorAction Stop
}
catch {
Write-Warning -Message » Error. Error details: $_.Exception.Message»
}
}
}
else {
Write-Output «No services with ‘Stopping’.status»
}


На этом все, сегодня мы смогли завершить процессы, которые у нас не получалось завершить, например, с помощью диспетчера устройств или из графической оболочки.