Ako násilne ukončiť proces zavesenej služby vo Windows?

Ako ukončiť proces služby Windows, ktorá je zaseknutá v stave zastavenia? Myslím si, že väčšina správcov Windows narazila na situácie, keď sa pri pokuse zastaviť (reštartovať) službu z grafického rozhrania konzoly Service Management Console (Services.msc) služba zamrzne a zablokuje sa. zastavenie. Potom nemôžete zastaviť službu v konzole, pretože tlačidlá servisných akcií nie sú k dispozícii. Najjednoduchší spôsob je reštart servera, ale nie vždy to platí. Zvážte alternatívny spôsob vynútiť službu vypnutia alebo proces bez nutnosti reštartu.

Ak sa služba do 30 sekúnd od zastavenia služby nezastaví, systém Windows zobrazí správu:

Nepodarilo sa zastaviť službu xxxxxxx Windows na lokálnom počítači.
Chyba 1053. Služba nemohla zastaviť službu xxxxxx na lokálnom počítači
Chyba 1053: Služba neodpovedala včas.

Pri pokuse zastaviť takúto službu príkazom: net stop wuauserv sa zobrazí správa:

Služba sa začína alebo zastavuje. Skúste znova list.

obsah:

  • Ukončenie služby zavesenia pomocou TaskKill
  • Vynútiť vypnutie zavesenej služby z PowerShell
  • Analýza procesov zavesenia pomocou Resmon
  • Process Explorer: Ukončenie procesu zavesenia z časti SYSTEM

Ukončenie služby zavesenia pomocou TaskKill

Najjednoduchší spôsob ukončenia zavesenej služby je použitie pomôcky taskkill. Najprv musíte zistiť PID (identifikátor procesu) našej služby. Príkladom je služba Windows Update, jej názov systému wuauserv (názov nájdete vo vlastnostiach služby v konzole services.msc).

Pomerne často sa tento problém vyskytuje so službou Inštalátor modulov Windows, keď sa server reštartuje, najmä po inštalácii aktualizácií v systéme Windows Server 2012 R2 / 2008 R2..Je dôležité. Buďte opatrní. Nútená rezignácia procesu kritických služieb Windows môže viesť k BSOD alebo reštartu systému.

Na príkazovom riadku s právami správcu (je to dôležité, inak dôjde k chybe odmietnutia prístupu):
sc queryex wuauserv

V tomto prípade je proces PID 816.

Vynútenie ukončenia procesu zavesenia s PID 816:

taskkill / PID 816 / F

ÚSPECH: Proces s PID 816 bol ukončený.

Tento príkaz núti službu ukončiť. V budúcnosti sa môžete vrátiť do konzoly správy služieb a manuálne spustiť službu (alebo túto službu úplne odstrániť, ak to nie je potrebné).

Headshot zavesenej služby sa môže vykonávať elegantnejšie bez toho, aby bolo potrebné manuálne určovať PID procesu. Obslužný program taskkill obsahuje voľbu / FI, ktorá vám umožňuje použiť filter na výber potrebných služieb alebo procesov. Konkrétnu službu môžete zastaviť príkazom:

TASKKILL / F / FI “SLUŽBY eq wuauserv”

Alebo môžete vynechať názov služby a ukončiť všetky služby v zmrazenom stave pomocou príkazu:

taskkill / F / FI „status eq not responding“

Potom by sa mala služba zastavená v stave Zastaviť.

Vynútiť vypnutie zavesenej služby z PowerShell

Môžete tiež použiť PowerShell na vynútenie servisného zastavenia. Pomocou nasledujúceho príkazu získate zoznam služieb v stave Zastavenie:

Get-WmiObject -Class win32_service | Where-Object $ _. State -eq 'prestať čakať'

Rutina pomôže dokončiť proces pre všetky nájdené služby. Stop-proces. Kombináciou oboch operácií v slučke dostaneme skript, ktorý automaticky ukončí všetky procesy pozastavených služieb v systéme:

$ Services = Get-WmiObject -Class win32_service -Filter "state = 'zastaviť čakanie'"
if ($ Services)
foreach (služba $ v $ Services)
vyskúšať
Stop-Process -Id $ service.processid -Force -PassThru -ErrorAction Stop

chytiť
Upozornenie na zápis - správa „Chyba. Podrobnosti o chybe: $ _. Výnimka.Message“



else
Write-Output "Žiadne služby s 'Stopping'.status"

Analýza procesov zavesenia pomocou Resmon

Pomocou nástroja na sledovanie prostriedkov na pokračovanie môžete identifikovať proces, ktorý spôsobil zastavenie služby.

  1. V okne Sledovanie zdrojov prejdite na kartu CPU (CPU) a vyhľadajte proces služby visel;
  2. Vyberte položku Analýza čakacích reťazcov (analyzovať wait reťaz);
  3. V novom okne uvidíte, že na vás čaká ďalší proces. Vyplňte to. Ak čakáte na proces systému svchost.exe, nemusíte ho ukončovať. Pokúste sa analyzovať čakaciu reťaz na tento proces. Nájdite PID procesu, na ktorý váš svchost.exe čaká, a ukončite ho.

Process Explorer: Ukončenie procesu zavesenia z časti SYSTEM

Niektoré procesy spustené z časti SYSTEM nemôže ukončiť ani administrátor lokálneho servera. Faktom je, že jednoducho nemusí mať práva na určité procesy alebo služby. Na dokončenie takéhoto procesu (služieb) musíte dať administrátorom miestnej skupiny práva na službu (proces) a potom ich dokončiť. Na to potrebujeme dva pomocné programy: psexec.exe a ProcessExplorer (k dispozícii na webovej stránke spoločnosti Microsoft)..

  1. Ak chcete spustiť ProcessExplorer so systémovými právami (SYSTEM), musíte ho spustiť týmto spôsobom: PSExec -s -i ProcExp.exe
  2. V zozname procesov Process Explorer vyhľadajte proces služby visel a otvorte jej vlastnosti;
  3. Prejdite na kartu služby, vyhľadajte svoju službu a kliknite na oprávnenie;
  4. Udeliť povolenia službe plne ovládanie pre skupinu administrátorov (administrátori). Uložte zmeny;
  5. Teraz sa pokúste dokončiť proces servisu. Upozorňujeme, že práva na službu a jej proces boli udelené dočasne, až kým sa reštartuje. Trvalé práva na služby nájdete v servisných právach systému Windows.