Jak násilně ukončit proces zavěšené služby ve Windows?

Jak ukončit proces služby Windows, která je zaseklá ve stavu zastavení? Myslím, že většina správců Windows narazila na situace, kdy se při pokusu o zastavení (restartování) služby z grafického rozhraní konzoly pro správu služeb (Services.msc) služba zamrzne a přestane reagovat Zastavení. Poté nemůžete zastavit službu v konzoli, protože tlačítka akcí služeb nejsou k dispozici. Nejjednodušší způsob je restart serveru, ale to není vždy platné. Zvažte alternativní způsob vynutit službu vypnutí nebo proces bez nutnosti restartování.

Pokud se do 30 sekund po pokusu o zastavení služby nezastaví, systém Windows zobrazí zprávu:

Zastavení služby xxxxxxx Windows v místním počítači se nezdařilo.
Chyba 1053. Služba nemohla zastavit službu xxxxxx v místním počítači
Chyba 1053: Služba neodpověděla včas.

Při pokusu o zastavení takové služby příkazem: net stop wuauserv se zobrazí zpráva:

Služba se spouští nebo zastavuje. Zkuste to prosím znovu.

Obsah:

  • Ukončení služby zavěšení pomocí TaskKill
  • Vynutit vypnutí zavěšené služby z PowerShell
  • Analýza zavěšených procesů pomocí Resmon
  • Průzkumník procesů: Ukončení procesu zavěšení zpod SYSTEM

Ukončení služby zavěšení pomocí TaskKill

Nejjednodušší způsob ukončení zavěšené služby je použití obslužného programu taskkill. Nejprve musíte určit PID (identifikátor procesu) naší služby. Jako příklad si vezměte službu Windows Update, její systémový název wuauserv (název najdete ve vlastnostech služby v konzole services.msc).

Poměrně často k tomuto problému dochází se službou Instalační služba modulů Windows, když se restartuje server, zejména po instalaci aktualizací na Windows Server 2012 R2 / 2008 R2.Je důležité. Buďte opatrní. Nucená rezignace kritického procesu služeb systému Windows může vést k BSOD nebo restartu systému.

Na příkazovém řádku s právy správce (to je důležité, jinak dojde k chybě odepření přístupu):
sc queryex wuauserv

V tomto případě je PID procesu 816.

Vynutit ukončení procesu zavěšení pomocí PID 816:

taskkill / PID 816 / F

ÚSPĚCH: Proces s PID 816 byl ukončen.

Tento příkaz vynutí ukončení služby. V budoucnu se můžete vrátit do konzoly pro správu služeb a spustit službu ručně (nebo ji zcela odstranit, pokud to není nutné).

Headshot zavěšené služby lze provádět elegantněji, aniž by bylo nutné ručně určovat PID procesu. Obslužný program taskkill má možnost / FI, která vám umožňuje použít filtr k výběru potřebných služeb nebo procesů. Konkrétní službu můžete zastavit příkazem:

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

Nebo můžete vynechat název služby a ukončit všechny služby ve zmrazeném stavu příkazem:

taskkill / F / FI „status eq nereaguje“

Poté by se měla služba zastavená ve stavu Zastavení zastavit.

Vynutit vypnutí zavěšené služby z PowerShell

Můžete také použít PowerShell k vynucení servisního zastavení. Pomocí následujícího příkazu získáte seznam služeb ve stavu Zastavení:

Get-WmiObject -Class win32_service | Where-Object $ _. State -eq 'zastavit čekající'

Rutina pomůže dokončit proces pro všechny nalezené služby. Zastavte-Proces. Kombinací obou operací ve smyčce získáme skript, který automaticky ukončí všechny procesy pozastavených služeb v systému:

$ Services = Get-WmiObject -Class win32_service -Filter "state = 'zastavit čeká' '
if ($ Services)
foreach ($ service in $ Services)
zkuste
Stop-Process -Id $ service.processid -Force -PassThru -ErrorAction Stop

chytit
Varování při zápisu - zpráva „Chyba. Podrobnosti o chybě: $ _. Výjimka.Message“



jinde
Zápis-výstup "Žádné služby s 'Stopping'.status"

Analýza zavěšených procesů pomocí Resmon

Proces, který způsobil, že služba zamrzla, můžete identifikovat pomocí monitoru prostředků pro opakování.

  1. V okně Sledování zdrojů přejděte na kartu CPU (CPU) a najděte proces zavěšené služby;
  2. Vyberte položku Čekající analýza řetězce (Analyzovat Počkejte Řetěz);
  3. V novém okně uvidíte, že na vás čeká další proces. Dokončete to. Pokud čekáte na proces systému svchost.exe, nemusíte jej ukončovat. Zkuste analyzovat čekací řetězec pro tento proces. Najděte PID procesu, na který váš svchost.exe čeká, a ukončete jej.

Průzkumník procesů: Ukončení procesu zavěšení zpod SYSTEM

Některé procesy spuštěné z části SYSTEM nelze ukončit ani správcem lokálního serveru. Faktem je, že prostě nemusí mít práva na určité procesy nebo služby. K dokončení takového procesu (služeb) musíte udělit administrátorům místní skupiny práva na službu (proces) a poté je dokončit. K tomu potřebujeme dva nástroje: psexec.exe a ProcessExplorer (k dispozici na webu společnosti Microsoft).

  1. Chcete-li spustit ProcessExplorer se systémovými právy (SYSTEM), musíte jej spustit takto: PSExec -s -i ProcExp.exe
  2. V seznamu Process Explorer Process Process vyhledejte proces služby visel a otevřete její vlastnosti;
  3. Přejděte na kartu Služby, najděte svou službu a klikněte Oprávnění;
  4. V oprávnění služby udělit práva Plné Ovládání pro skupinu administrátorů (Administrátoři). Uložte změny;
  5. Nyní zkuste dokončit proces služby. Pamatujte, že práva na službu a její proces byla udělena dočasně, dokud nebyla restartována. Trvalá práva na služby viz Servisní práva systému Windows.