Как принудительно остановить службу
Перейти к содержимому

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

  • автор:

Как остановить, запустить, отключить службы

Как автоматически отключить службу

Привет всем! Как-то я рассказывал про отключение служб windows 7 для повышения производительности, а в этой статье я покажу как можно отключать системные службы вручную, а как автоматически.

При настойке операционной системы, очень часто приходится выполнять одни и те же действия, по отключению одних и тех же служб. Это меня раздражало и я никак не мог найти способ по его автоматизации. Но теперь я создал файл, который автоматически отключает ненужные мне службы. Если и у вас есть такая потребность, то читайте ниже, как это можно осуществить!)

В Windows 7, 8, 10, чтобы работать со службами, нужно:

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

Службы Windows

Как вручную остановить службу?

  1. Для того чтобы остановить службу, кликаем правой кнопкой мыши и выбираем свойство
  2. Нажимаем остановить

Как остановить службу

Как вручную запустить службу?

  1. Для того чтобы запустить службу, кликаем правой кнопкой мыши и выбираем свойство
  2. Нажимаем запустить

Как запустить службу

Как вручную отключить службу?

  1. Для того чтобы отключить службу, кликаем правой кнопкой мыши и выбираем свойство
  2. Нажимаем остановить (можно и без этого, но тогда придется перезагружать компьютер, чтобы она была отключена)
  3. Выбираем тип запуска отключена (часто люди интересуются как остановить службу обновления windows, как раз таким способом и нужно)

Как отключить службу

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

Как автоматически остановить, запустить, отключить службу?

Для начала скачайте мой шаблон. Это службы, который я обычно отключаю сразу, как поставлю хороший антивирус.

ремонт

Теперь смотрите нужные нам команды (команды берутся без кавычек):

  1. «net stop имя_службы» — эта команда останавливает службу
  2. «net start имя_службы» — эта команда запускает остановленную службу
  3. «sc config имя_службы start= значение» — эта команда меняет тип запуска службы.

Поле «значение» может быть 3 типов:

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

Поле «имя_службы» можно узнать следующим образом:

  1. Кликаем правой кнопкой мыши по необходимой службе и выбираем свойство
  2. Имя службы это и есть то имя, которое нам нужно

Имя службы

Теперь кликаем по скачанному файлу (Отключаем ненужные службы.bat) выше правой кнопкой мыши и нажимаем изменить.

Команды

У меня первая строчка останавливает службу, а вторая отключает её и так повторяется 4 раза с разными службами. В конце пауза, чтобы можно было посмотреть, что было сделано.

  1. Т.е. ищем название службы
  2. Пишем команду остановки или запуска
  3. Пишем команду типа запуска
  4. Сохраняем файл
  5. Кликаем по нему просто два раза кнопкой мыши и все. Скрипт будет автоматически выполнять ваши команды.

Таким образом, если вы часто что-то отключаете или останавливаете, вам просто необходим этот способ для экономии вашего времени!

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

date05.08.2021
useritpro
directoryWindows 10, Windows Server 2016, Windows Server 2019
commentsкомментариев 5

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

служба windows зависла в статусе stopping и не выключается

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

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

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

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

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

Отройте командную строку с правами правами администратора (иначе будет ошибка access denied) и выполите команду:
sc queryex wuauserv

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

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

taskkill /PID 9168 /F

завершить зависшую службу из командной строки с помощью утилиты taskkill

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

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

TASKKILL /F /FI “SERVICES eq wuauserv”

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

taskkill /F /FI “status eq not responding”

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

Также вы можете использовать утилиту taskkill для принудительной остановки зависших служб на удаленном компьютере:

TASKKILL /S CORPFS01 /F /FI “SERVICES eq wuauserv”

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

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

Get-WmiObject -Class win32_service | Where-Object

poweshell список служб в статусе stop pending

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

$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»
>

powershell скрипт для принудительной остановки всех зависших служб

$Services = Get-CimInstance -Class win32_service | where-Object state -eq ‘stop pending’

Анализ цепочки ожидания зависшего приложения с помощью ResMon

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

resmon анализ цепочки ожидания зависшей службы

  1. В окне Монитора ресурсов перейдите на вкладку ЦП (CPU) и найдите процесс зависшей службы;
  2. Выберите пункт Анализ цепочки ожидания (Analyze Wait Chain);
  3. В новом окне скорее всего вы увидите, что вам процесс ожидает другой процесс. Завершите его. Если выполняется ожидание системного процесса svchost.exe, завершать его не нужно. Попробуйте проанализировать цепочку ожидания для этого процесса. Найдите PID процесса, которого ожидает ваш svchost.exe и завершите его

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

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

  1. Чтобы запустить утилиту ProcessExplorer с правами системы (SYSTEM), выполните команду: PSExec -s -i ProcExp.exe
  2. В списке процессов Process Explorer найдите процесс зависшей службы и откройте ее свойства;
  3. Перейдите на вкладку Services, найдите свою службу и нажмите кнопку Permissions;procexplorer - задать права на службу
  4. В разрешения службы предоставьте права FullControl для группы администраторов (Administrators). Сохраните изменения;полные права на службу для администратора
  5. Теперь попробуйте завершить процесс службы.

Таймаут, в течении которого Service Control Manager ждет ожидания запуска или остановки службы можно изменить через параметр реестра ServicesPipeTimeout. Если служба не запускается в течении указанного таймаута, Windows записывает ошибку в Event Log (Event ID: 7000, 7009, 7011, A timeout was reached 30000 milliseconds). Вы можете увеличить этот таймаут, например до 60 секунд:

reg add HKLM\SYSTEM\CurrentControlSet\Control /v ServicesPipeTimeout /t REG_SZ /d 600000 /f

Это бывает полезным при запуске/остановки тяжелых служб, которые не успевают завершить все процессы быстро (например, MS SQL Server).

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

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

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

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

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

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

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

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

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

sc queryex wuauserv

Таким образом, мы узнали PID службы – 708

admin_PID

Теперь, для принудительного завершения процесса с полученным PID пропишем такую команду:

taskkill /PID 708 /F

taskkill

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

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

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

Get-WmiObject -Class win32_service | Where-Object

3333

Теперь нам нужно завершить процесс для найденных нами служб, в этом нам поможет Stop-Process. 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”
>

Stop-Process

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

Как на Windows 11 отключить службы?

Как и в случае со всеми версиями и сборками операционных систем Windows, в Windows 11 присутствуют «ненужные» службы, которые пользователь может отключить в целях сокращения оказываемой ими нагрузки на процессор, диск, оперативную память, сетевое подключение и т.д. Перманентное отключение служб осуществляется через системное приложение «Службы», а если же их следует выключить на время, можно воспользоваться «Диспетчером задач». Возможны и другие варианты, в т.ч. при использовании сторонних утилит.

Как запустить программу «Службу» в Windows 11?

Запуск системного приложения «Службы» произвести несколькими способами. Рассмотрим основные:

Запуск программы «Службы» из меню «Пуск»

Откройте меню «Пуск» и введите в поисковую строку запрос «Службы», затем кликните по отобразившемуся одноименному значку:

Запуск «Служб» из окна «Выполнить»

Нажмите на клавиатуре клавиши «Win + R», чтобы открыть окно «Выполнить», затем без кавычек впишите в него команду «services.msc» и нажмите «ОК»:

Запуск «Служб» из окна «Выполнить»

Данная команда также может быть использована в командной строке Windows и в консоли PowerShell.

Запуск приложения «Службы» через «Проводник»

Программа «Службы», как и любая другая, хранится на диске в виде файла (в данном случае — «services.msc»). Чтобы добраться до нее, нужно перейти по адресу (просто скопируйте его и вставьте в адресную строку «Проводника»):

C:\Windows\System32

Запуск приложения «Службы» через «Проводник»

Приведенный выше адрес актуален только в случае, если система установлена на «Локальном диске C». Если это другой диск (D,E и т.д.), просто смените «C» на нужную букву.

Запуск «Служб» из «Диспетчера задач»

Сначала запустите «Диспетчер задач», используя комбинацию клавиш «Ctrl + Shift + Esc» или кликнув правой кнопкой мыши по значку «Пуск» и затем выбрав нужный пункт в отобразившемся меню:

Запуск «Служб» из «Диспетчера задач»

В самом окне «Диспетчера задач» перейдите во вкладку «Службы», кликните правой кнопкой мыши по любой службе и выберите из выпадающего меню пункт «Открыть службы»:

Запуск «Служб» из «Диспетчера задач»

Теперь рассмотрим процесс временного и перманентного отключения запущенных служб.

Как временно приостановить службу в Windows 11

Как отмечалось выше, это можно сделать из системной программы «Диспетчер задач». Способ ее запуска был рассмотрен в предыдущей части статьи. Действия также выполняется во вкладке «Службы». Чтобы приостановить службы, просто кликните по ней правой кнопкой мыши, затем выберите пункт «Остановить».

временно приостановить службу в Windows 11

Почему это временный способ? Дело в том, что у каждой службы присутствует параметр «Тип запуска». Если в нем выставлено значение «Вручную» или «Автоматически», то служба будет повторно запущена по запросу какой-либо программы, системы или даже другой службы.

Как навсегда отключить службу в Windows 11?

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

  1. Через приложение «Службы»

Сначала запустите программу «Службы» одним из рассмотренных вначале способов. Дальнейшие действия:

  • Находим в списке служб ту, которую требуется отключить перманентно, и кликаем по ней два раза мышкой, что приведет к открытию дополнительного окна. Для примера снова поработаем с «XboxNetApiSvc».

Окно

  • Сначала нажмем кнопку «Остановить», чтобы временно отключить службу. Затем напротив параметра «Тип запуска» выставляем «Отключена» и кликаем по кнопке «Применить»:

навсегда отключить службу в Windows 11

  • Готово.

Чтобы повторно включить службу, сначала запускаем ее, затем выставляем «Автоматически» в параметре «Тип запуска» (или, наоборот — без разницы).

  1. Через командную строку Windows

Данный способ окажется полезным в случаях, когда невозможно запустить ни «Диспетчер задач», ни программу «Службы» (из-за системного сбоя или действий вредоносных программ).

  • Сначала нужно запустить саму командную строку от имени администратора. Вызываем меню «Пуск», вписываем в поисковую строку без кавычек запрос «командная строка» или «cmd», затем кликаем по элементу «Запуск от имени администратора» справа:

Запуск командной строки

  • На экране отобразится окно командной строки. Если имя службы, которую требуется остановить, неизвестно, тогда первым делом потребуется вывести список тех, что запущены в данный момент. Для этого скопируйте нижеследующую команду и нажмите Enter:

sc query state=

Выполнение команды

  • Находим в отобразившемся списке службу (нужна строка после параметра «Имя_службы»), которую нужно остановить. Для примера остановим службу «Сетевая служба Xbox Live», т.к. «XboxNetApiSvc». Для ее остановки вводим в командную строку следующую команду:

sc stop XboxNetApiSvc

Выполнение команды sc stop XboxNetApiSvc

  • Обратите внимание, что мы использовали команду остановки службы 2 раза. Сначала, чтобы остановить ее (вследствие чего его состояние изменилось на «STOP_PENDING», т.е. «в ожидании остановки»), а затем для того, чтобы убедиться, остановлена ли она.
  • Если потребуется вновь запустить остановленную службу, используем следующую команду:

sc start XboxNetApiSvc

Выполнение команды sc start XboxNetApiSvc

  1. ПрипомощиутилитыEasy Service Optimizer

Easy Service Optimizer или ESO — бесплатная утилита, функциональные возможности которой практически полностью соответствуют таковым у системного приложения «Службы». Вообще, с при помощи этой программы можно быстро завершить работу множества служб единовременно с целью оптимизации компьютера, но нас интересует поштучное их отключение. Сделать это очень просто:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *