Содержание
Я думаю, что большинство пользователей встречались с такой проблемой, как зависание служб в Windows, причем, попытка принудительного завершения такой службы не увенчалась успехом, и она весит в режиме “Stopping”. Из графического интерфейса перезапустить или принудительно завершить службу тоже не удается, а перезагрузка самого сервера, в нашем случае компьютера, не всегда может быть допустимым.
Сейчас мы рассмотрим способ, который поможет вам принудительно завершить процесс, который завис, при этом, само устройство перезапускать не нужно.
Как принудительно завершить зависшую службу?
Итак, как только пройдет 30 секунд и видно, что служба не остановилась, то Windows выведет следующее сообщение:
“Не удалось остановить службу xxxxxxx Windows на локальном компьютере.Ошибка 1053. Служба не ответила на запрос своевременно”. |
Быстро и без усилий завершить работу зависшего процесса можно при помощи утилиты taskkill. Перед этим вам нужно будет определить PID процесса (службы). В пример мы будем использовать службу Windows Update, системное имя процесса — wuauserv.
Внимание! Если вы завершите важный процесс, то это может привести к перезагрузке системы или BSOD (экран смерти).
Теперь открываем командную строку с правами админа, если так не сделать, то может выйти ошибка. В командную строку вводим следующее:
sc queryex wuauserv |
Таким образом, мы узнали PID службы — 708
Теперь, для принудительного завершения процесса с полученным PID пропишем такую команду:
taskkill /PID 708 /F |
Появится сообщение, что служба “Центр обновлений Windows” завершена. Можно потом вернуться в управление службами и там снова запустить процесс, либо вообще его удалить, если вы не пользуетесь им.
Есть еще один метод принудительного завершения процесса, при этом, не нужно узнавать PID. В этом деле нам поможет уже знакомая утилита PowerShell. Запускаем ее от имени администратора.
Следующая команда поможет нам выявить службы, которые находятся в состоянии stopping:
Get-WmiObject -Class win32_service | Where-Object {$_.state -eq ‘stop pending’} |
Теперь нам нужно завершить процесс для найденных нами служб, в этом нам поможет Stop-Process. C помощью следующего скрипта, все подвисшие в системе службы будут завершены:
На этом все, сегодня мы смогли завершить процессы, которые у нас не получалось завершить, например, с помощью диспетчера устройств или из графической оболочки.
- В Windows XP отключил службу Сервер, теперь не могу назначить привилегии пользователю? Как это взаимосвязано? Служба «Сервер» для доступа к удаленным принтерам и оборудованию сервера обращения. Влияет ли это на привилегии локальных пользователей и пользователей домашней (малого офиса) сети?
- Не могу ЗАПУСТИТЬ службу Центра обновлений windows 7 так как эта служба Остановлена? Для меня это Важно по причине НЕ выносимого торможения компьютера; может Вообще не стоит обновлять и выключить эти обновления?
- Отключить обновления виндовс 10 или остановить выключение компьютера Через 15 минут мы отключим вам ноутбук чтобы заюзать обнову! АФИГЕТЬ Я РАД вот только такое отключить нельзя! БЕСИТ а потом при включении заного после 16 минут этого нету… Но завтра ТОЖЕ САМОЕ бесполезно же!
- Не могу запустить Windows Audio выдает ошибку 1068: Не удалось запустить дочернюю службу. Что делать? Перезагрузил компьютер и увидел что звука нету, решил разобраться а Windows Audio не включена, а чтобы включить ее сначала надо включить Планировщик классов мультимедиа. Пытаюсь его включить выдает еще одну ошибку Не удалось найти указанный файл. Что делать?
Добавить комментарий
Как завершить процесс службы Windows, зависшей в статусе stopping (остановка)? Думаю, большинство администраторов Windows, встречалось с ситуациями, когда при попытке остановить (перезапустить) службу из графического интерфейса консоли управления службами (Services.msc), служба зависает намертво и висит в статусе Stopping. После этого вы не можете остановить службу в консоли, т.к. кнопки действий службы становятся недоступными. Самый простой способ – перезагрузить сервер, но это не всегда допустимо. Рассмотрим альтернативный способ, позволяющий принудительно завершить зависшую службу или процесс без необходимости перезагрузки.
Если в течении 30 секунд после попытки остановки службы, она не останавливается, Windows выводит сообщение:
При попытке остановить такую службу командой: net stop wuauserv, появляется сообщение:
The service is starting or stopping. Please try again letter.
Содержание:
Завершение зависшей службы с помощью TaskKill
Наиболее простой способ завершить зависшую служу – воспользоваться утилитой taskkill. В первую очередь нужно определить PID (идентификатор процесса) нашей службы. В качестве примера возьмем службу Windows Update, ее системное имя wuauserv (имя можно посмотреть в свойствах службы в консоли services.msc).
Довольно часто эта проблема случается со службой Windows Modules Installer при перезагрузке сервера, особенно после установки обновлений на 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.
- В окне Монитора ресурсов перейдите на вкладку ЦП (CPU) и найдите процесс зависшей службы;
- Выберите пункт Анализ цепочки ожидания (Analyze Wait Chain);
- В новом окне скорее всего вы увидите, что вам процесс ожидает другой процесс. Завершите его. Если выполняется ожидание системного процесса svchost.exe, завершать его не нужно. Попробуйте проанализировать цепочку ожидания для этого процесса. Найдите PID процесса, которого ожидает ваш svchost.exe и завершите его.
Process Explorer: Завершение зависшего процесса из-под SYSTEM
Некоторые процессы, запущенные из-под SYSTEM, не может завершить даже локальный администратора сервера. Дело в том, что у него просто может не быть прав на некоторые процессы или службы. Чтобы завершить такие процесс (службы), вам необходимо предоставить локальной группе Administrators права на службу (процесс), а потом завершить их. Для этого нам понадобятся две утилиты: psexec.exe и ProcessExplorer (доступны на сайте Microsoft).
- Для запуска ProcessExplorer с правами системы (SYSTEM), его нужно стартовать таким образом:
PSExec -s -i ProcExp.exe
- В списке процессов Process Explorer найдите процесс зависшей службы и откройте ее свойства;
- Перейдите на вкладку Services, найдите свою службу и нажмите кнопку Permissions;
- В разрешения службы предоставьте права Full Control для группы администраторов (Administrators). Сохраните изменения;
- Теперь попробуйте завершить процесс службы.Обратите внимание, что права на службу и ее процесс выдались временно, до ее перезапуска. Для предоставления постоянных прав на службы познакомьтесь со статьей Права на службы в Windows.
Используемые источники:
- https://computerinfo.ru/kak-prinuditelno-zavershit-zavisshuyu-sluzhbu/
- https://windowsru.com/updates/bgs9
- https://winitpro.ru/index.php/2016/02/04/prinuditelnoe-zavershenie-zavisshej-sluzhby-windows/