Poradnik

Usługa zawieszona na Zatrzymywanie...

Przystawka pokazuje Zatrzymywanie i nic się nie rusza. Zwykłą odpowiedzią jest Menedżer zadań, zgadywanie, w którym svchost.exe usługa mieszka, i Zakończ zadanie - co kończy każdą inną usługę w tym procesie, nie mówiąc, które to były.

Dlaczego tak się dzieje

  • Usługa nie odpowiada na żądanie zatrzymania. Windows prosi uprzejmie i czeka. Usługa, która się zawiesiła albo czeka na coś, co nie wróci, nie odpowiada nigdy.
  • Coś, co od niej zależy, nadal działa. Menedżer odmawia zatrzymania, zamiast zepsuć tamto - a przystawka pokazuje to jako czekanie.
  • Dzieli proces z innymi. Większość usług Windowsa mieszka we wspólnym svchost.exe. Zakończenie tego procesu kończy je wszystkie, i dokładnie to robi Menedżer zadań, nie wymieniając ich po nazwie.

Popatrz, zanim cokolwiek zakończysz

Zapytaj, co zakończenie zabrałoby ze sobą. Nic się nie dzieje, dopóki nie zdejmiesz --dry-run.

$ bws kill Spooler --dry-run

Podgląd podaje numer procesu, wymienia po nazwie każdą inną usługę w nim żyjącą i pokazuje dwa kroki zamiast jednego: poproś usługę o zatrzymanie i tylko jeśli to nie zadziała, zakończ proces. Usługa, która zatrzymuje się sama, nigdy nie jest ubijana.

  • --force pomija uprzejmy krok i kończy proces od razu. Zmienia plan, a nie jego wykonanie, więc podgląd pokazuje jeden krok zamiast dwóch i różnicę widać, zanim cokolwiek się stanie.
  • --restart podnosi wszystko z powrotem, gdy proces zniknie - wpis, o który pytałeś, i wszystko, co dzieliło z nim proces. Bez tego maszyna zostaje z tymi usługami zatrzymanymi, a raport mówi, jak je uruchomić.
  • Odmowa przychodzi przed przyciskiem. Sterownik, proces chroniony przez system, usługa, dla której menedżer nie przyjmie zatrzymania - odmówione przy budowaniu planu, z podanym powodem, a nie po sześćdziesięciu sekundach czekania.
  • Ostrzeżenie, gdy to ma znaczenie. Jeśli wpis jest czymś, bez czego maszyna nie działa, plan to mówi - zatrzymanie kładzie maszynę, a nie samą usługę.

Zakończenie procesu to jedyna rzecz, jakiej nikt nie może odmówić w imieniu maszyny. Dlatego jest osobnym czasownikiem, dlatego podgląd wymienia każdą usługę, którą zabierze, i dlatego uprzejmy krok idzie pierwszy, chyba że powiesz inaczej.

Bezpieczniejsza kolejność

  1. Zobacz, czym to jest. bws show Spooler - proces, co od tego zależy, od czego to zależy i czy w ogóle przyjmuje żądania zatrzymania.
  2. Spróbuj zwykłego zatrzymania, jako planu. bws stop Spooler --dry-run --dependents. Jeśli odpowiedzią jest odmowa, mówi, który z trzech powodów to jest.
  3. Jeśli nie chce się zatrzymać, zobacz, ile kosztuje zakończenie. bws kill Spooler --dry-run, i przeczytaj listę usług dzielących ten proces.
  4. A potem zrób to, z drogą powrotną. bws kill Spooler --restart. Raport kończy się tym, co nie zadziałało, i komendami, które przywracają rzeczy na miejsce.

Wszystkie cztery działają tak samo w oknie: kliknij wiersz prawym, wybierz What force stopping would do, przeczytaj plan - a przycisk pod nim nazywa to, co zrobi.

Dlaczego nie po prostu Menedżer zadań

Bo odpowiada na inne pytanie. Menedżer zadań zna procesy, a ten problem jest o usługach - i te dwie rzeczy nie odwzorowują się jeden do jednego.

Wspólny svchost.exe może trzymać kilkanaście usług. Menedżer zadań zakończy go, nie mówiąc, które to były, żadna nie wróci sama, a nic po fakcie nie powie Ci, co się zatrzymało. EDR, który reaguje na zakończenie procesu svchost.exe, robi swoją robotę - i nie umie odróżnić Twojego kliknięcia od czyjegokolwiek innego.