- Как принудительно завершить процесс зависшей службы в Windows?
- Завершение зависшей службы с помощью TaskKill
- Принудительное завершение зависшей службы из PowerShell
- Анализ зависших процессов с помощью Resmon
- Process Explorer: Завершение зависшего процесса из-под SYSTEM
- Отключение службы обновления Windows 7
- Способы деактивации
- Способ 1: «Диспетчер служб»
- Способ 2: «Командная строка»
- Способ 3: «Диспетчер задач»
- Способ 4: «Конфигурация системы»
Как принудительно завершить процесс зависшей службы в Windows?
Как завершить процесс службы 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).
В командной строке с правами администратора (это важно, иначе будет ошибка 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
Завершить процесс для всех найденных служб поможет командлет 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) и найдите процесс зависшей службы;
- Выберите пункт Анализ цепочки ожидания (AnalyzeWaitChain);
- В новом окне скорее всего вы увидите, что вам процесс ожидает другой процесс. Завершите его. Если выполняется ожидание системного процесса 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;
- В разрешения службы предоставьте права FullControl для группы администраторов (Administrators). Сохраните изменения;
- Теперь попробуйте завершить процесс службы.
Отключение службы обновления Windows 7
Своевременное обновление системы призвано поддерживать её актуальность и безопасность от злоумышленников. Но по различным причинам некоторые пользователи желают отключить данную функцию. В краткосрочном периоде, действительно, иногда это бывает оправдано, если вы, например, выполняете определенные ручные настройки ПК. При этом иногда требуется не только отключить возможность обновления, но и полностью деактивировать службу, которая за это отвечает. Давайте выясним, как решить данную задачу в Windows 7.
Способы деактивации
Название службы, которая отвечает за установку обновлений (как автоматических, так и ручных), говорит само за себя – «Центр обновления Windows». Её деактивацию можно выполнить как обычными способами, так и не совсем стандартными. Поговорим о каждом из них в отдельности.
Способ 1: «Диспетчер служб»
Наиболее часто применимым и надежным способом отключить «Центр обновления Windows» является использование «Диспетчера служб».
- Кликните «Пуск» и перейдите в «Панель управления».
Щелкайте «Система и безопасность».
В списке инструментов, который представится в новом окне, кликните «Службы».
Существует и более быстрый вариант перехода в «Диспетчер служб», хотя он требует запоминания одной команды. Для вызова инструмента «Выполнить» наберите Win+R. В поле утилиты введите:
Любой из описанных выше путей приводит к открытию окна «Диспетчера служб». В нем располагается список. В данном перечне требуется найти наименование «Центр обновления Windows». Для того чтобы упростить задачу, постройте его по алфавиту, нажав «Имя». Статус «Работает» в столбце «Состояние» означает тот факт, что служба функционирует.
Чтобы отключить «Центр обновления», выделите наименование данного элемента, а затем щелкайте «Остановить» в левой области окна.
Выполняется процесс остановки.
Теперь служба остановлена. Об этом свидетельствует исчезновение надписи «Работает» в поле «Состояние». Но если в колонке «Тип запуска» установлено значение «Автоматически», то «Центр обновления» будет запущен при следующем включении компьютера, а это не всегда является приемлемым для пользователя, который произвел отключение.
Чтобы предотвратить это, следует сменить статус в столбце «Тип запуска». Щелкайте по наименованию элемента правой клавишей мыши (ПКМ). Выбирайте «Свойства».
Перейдя в окно свойств, находясь во вкладке «Общие», щелкайте по полю «Тип запуска».
Из раскрывшегося списка выберите значение «Вручную» или «Отключена». В первом случае служба после перезапуска компьютера не активируется. Для её включения потребуется воспользоваться одним из многих способов активации вручную. Во втором случае, активировать её можно будет только после того, как пользователь снова сменит в свойствах тип запуска с «Отключена» на «Вручную» или «Автоматически». Поэтому именно второй вариант отключения является более надежным.
После того, как выбор сделан, последовательно жмите по кнопкам «Применить» и «OK».
О том, как снова в случае необходимости произвести активацию «Центра обновлений», рассказано в отдельном уроке.
Способ 2: «Командная строка»
Решить поставленную задачу можно также при помощи ввода команды в «Командную строку», запущенную от лица администратора.
Выберите каталог «Стандартные».
В перечне стандартных приложений найдите «Командная строка». Щелкайте по этому элементу ПКМ. Выбирайте «Запуск от имени администратора».
«Командная строка» запущена. Введите такую команду:
net stop wuauserv
Но стоит помнить, что данный способ остановки, в отличие от предыдущего, деактивирует службу только до следующего перезапуска компьютера. Если вам требуется остановить её на более продолжительное время, то придется повторно выполнять операцию через «Командную строку», а лучше сразу воспользоваться Способом 1.
Способ 3: «Диспетчер задач»
Остановить службу обновления можно также воспользовавшись «Диспетчером задач».
- Для перехода в «Диспетчер задач» наберите Shift+Ctrl+Esc или щелкните ПКМ по «Панели задач» и выберите там «Запустить диспетчер задач».
«Диспетчер» запустился. Прежде всего, для выполнения поставленного задания нужно заполучить административные права. Для этого перейдите в раздел «Процессы».
В открывшемся окне кликните по кнопке «Отображать процессы всех пользователей». Именно вследствие выполнения данного действия «Диспетчеру» присваиваются административные возможности.
Теперь можно переходить в раздел «Службы».
В открывшемся перечне элементов необходимо отыскать наименование «Wuauserv». Для более быстрого поиска воспользуйтесь нажатием на наименование «Имя». Таким образом, весь список выстроится по алфавиту. После того, как вы обнаружили требуемый элемент, щелкайте по нему ПКМ. Из списка выберите «Остановить службу».
Способ 4: «Конфигурация системы»
Следующий способ, позволяющий решить поставленную задачу, осуществляется через окно «Конфигурации системы».
- Перейти в окно «Конфигурации системы» можно из раздела «Администрирование»«Панели управления». О том, как попасть в данный раздел, говорилось при описании Способа 1. Итак, в окне «Администрирование» жмите «Конфигурация системы».
Также этот инструмент можно запустить из-под окна «Выполнить». Вызовите «Выполнить» (Win+R). Введите:
Оболочка «Конфигурации системы» запущена. Переместитесь в раздел «Службы».
В открывшемся разделе отыщите элемент «Центр обновления Windows». Для того чтобы сделать это быстрее, постройте список по алфавиту, нажав «Служба». После того, как элемент найден, снимите флажок слева от него. Затем жмите «Применить» и «OK».
Откроется окошко «Настройка системы». В нем будет предложено перезагрузить компьютер, чтобы изменения вступили в силу. Если вы желаете это сделать немедленно, то закройте все документы и программы, а потом жмите «Перезагрузить».
В обратном случае нажимайте «Выход без перезагрузки». Тогда изменения вступят в силу только после того, как вы повторно включите ПК в ручном режиме.
Как видите, существует довольно много способов деактивировать службу обновления. Если вам нужно произвести отключение только на период текущей сессии работы ПК, то можете воспользоваться любым из вышеописанных вариантов, который считаете самым удобным. Если же следует произвести отключение на продолжительное время, которое предусматривает, как минимум, одну перезагрузку компьютера, то в этом случае, во избежание необходимости выполнять процедуру несколько раз, оптимальным будет произвести отключение через «Диспетчер служб» с изменением типа запуска в свойствах.