Как да насилствено прекратяваме процеса на окачена услуга в Windows?

Как да прекратите процеса на услуга на Windows, която е останала в състояние на спиране? Мисля, че повечето администратори на Windows са се сблъсквали със ситуации, когато при опит да спрат (рестартират) услуга от графичния интерфейс на конзолата за управление на услуги (Services.msc), услугата замръзва и виси в състояние спиране. След това не можете да спрете услугата в конзолата, защото бутоните за действие за услуги стават недостъпни. Най-лесният начин е да рестартирате сървъра, но това не винаги е валидно. Помислете за алтернативен начин услуга за изключване на сила или обработете без необходимост от рестартиране.

Ако в рамките на 30 секунди след опит за спиране на услугата не спира, Windows показва съобщението:

Спирането на услугата xxxxxxx Windows на локалния компютър не бе успешно.
Грешка 1053. Услугата не можа да спре услугата xxxxxx на локален компютър
Грешка 1053: Услугата не отговори навреме.

Когато се опитвате да спрете такава услуга с командата: net stop wuauserv, се появява съобщение:

Услугата започва или спира. Моля, опитайте отново писмо.

Съдържание:

  • Прекратяване на висяща услуга с TaskKill
  • Принудително изключване на обесена услуга от PowerShell
  • Анализ на висящи процеси с помощта на Resmon
  • Изследовател на процесите: Прекратяване на процес, окачен от SYSTEM

Прекратяване на висяща услуга с TaskKill

Най-лесният начин да прекратите обесната услуга е да използвате помощната програма Taskkill. Първо трябва да определите PID (идентификатор на процеса) на нашата услуга. Като пример вземете услугата Windows Update, нейното системно име wuauserv (името може да се намери в свойствата на услугата в конзолата services.msc).

Доста често този проблем се случва с услугата за инсталиране на модули на Windows, когато сървърът се рестартира, особено след инсталиране на актуализации на Windows Server 2012 R2 / 2008 R2.Важно е. Бъдете внимателни. Принудителната оставка на критичен процес на услуги за Windows може да доведе до BSOD или рестартиране на системата.

В командния ред с права на администратор (това е важно, в противен случай ще има грешка, отказана в достъп):
sc queryex wuauserv

В този случай PID на процеса е 816.

За да принудите прекратяване на обесен процес с PID 816:

taskkill / PID 816 / F

УСПЕХ: Процесът с PID 816 е прекратен.

Тази команда принуждава услугата да бъде прекратена. В бъдеще можете да се върнете към конзолата за управление на услугата и ръчно да стартирате услугата (или да изтриете напълно тази услуга, ако не е необходима).

Изглед на главата на окачена услуга може да се извърши по-елегантно, без да се налага ръчно да се определя PID на процеса. Помощната програма taskkill има опцията / FI, която ви позволява да използвате филтър, за да изберете необходимите услуги или процеси. Можете да спрете конкретна услуга с командата:

TASKKILL / F / FI „УСЛУГИ eq wuauserv“

Или можете изобщо да пропуснете името на услугата, прекратявайки всички услуги в замразено състояние, като използвате командата:

taskkill / F / FI „статус eq не отговаря“

След това услугата, останала в състояние Спиране, трябва да спре.

Принудително изключване на обесена услуга от PowerShell

Можете също да използвате PowerShell, за да принудите спиране на услугата. Използвайки следната команда, можете да получите списък с услуги в състояние „Спиране“:

Get-WmiObject -Class win32_service | Къде-обект $ _. Състояние -eq 'спре да чакаш

Командлерът ще помогне за завършване на процеса за всички намерени услуги. Стоп-процес. Комбинирайки двете операции в цикъл, получаваме скрипт, който автоматично прекратява всички процеси на спрените услуги в системата:

$ Services = Get-WmiObject -Class win32_service -Filter "state = 'stop чака"
ако ($ Услуги)
foreach ($ услуга в $ Services)
опитайте
Stop-Process -Id $ service.processid -Force -PassThru -ErrorAction Stop

улов
Write-Warning -Message "Грешка. Подробности за грешки: $ _. Изключение. Съобщение"



друго
Изписване „Няма услуги с„ Спиране “.status “

Анализ на висящи процеси с помощта на Resmon

Можете да идентифицирате процеса, който накара услугата да замръзне, като използвате монитора на ресурсите на resmon.

  1. В прозореца Монитор на ресурси отидете на раздела CPU (CPU) и намерете процеса на окачената услуга;
  2. Изберете елемент Изчакване на верижен анализ (анализирам Изчакайте верига);
  3. В нов прозорец най-вероятно ще видите, че ви очаква друг процес. Попълнете го. Ако чакате системния процес svchost.exe, няма нужда да го прекратявате. Опитайте се да анализирате веригата на чакане за този процес. Намерете PID на процеса, който чака svchost.exe, и го прекратете.

Изследовател на процесите: Прекратяване на процес, окачен от SYSTEM

Някои процеси, стартирани от под SYSTEM, не могат да бъдат прекратени дори от администратора на локалния сървър. Факт е, че той просто може да няма права върху определени процеси или услуги. За да завършите такъв процес (услуги), трябва да дадете на администраторите на локалната група правата върху услугата (процеса) и след това да ги завършите. За целта ни трябват две помощни програми: psexec.exe и ProcessExplorer (достъпна на уебсайта на Microsoft).

  1. За да стартирате ProcessExplorer със системни права (SYSTEM), трябва да го стартирате по този начин: PSExec -s -i ProcExp.exe
  2. В списъка с процеси Process Explorer намерете процеса на окачената услуга и отворете нейните свойства;
  3. Отидете в раздела Услуги, намерете услугата и щракнете Разрешения;
  4. В разрешенията на услугата предоставете правата пълен контрол за група администратори (Администраторите). Запазете промените;
  5. Сега опитайте да завършите процеса на услуга. Имайте предвид, че правата върху услугата и нейният процес са предоставени временно, докато не се рестартира. За постоянни права върху услуги вижте Права за услуги на Windows.