Jak rozpoznać i zabić proces zawieszania, gdy system zawiesza się i reaguje powoli na dane wprowadzone przez użytkownika?

24

Ostatnio, gdy próbowałem otworzyć wideo za pomocą VLC, mój system zwolnił, przeglądarka otwartych aplikacji, VLC i menedżer plików i inni nie zareagowali. Mysz zareagowała bardzo powoli.

Na komputerze z systemem Windows nacisnąłem klawisz CTRL-ALT-DEL, aby otworzyć menedżera zadań, wyszukać proces, który spowodował zawieszenie się i zabić go.

Ponieważ jestem całkiem nowy w używaniu Linuksa, nie opracowałem najlepszej praktyki rozwiązania takiej sytuacji w Ubuntu.

Który szybki i skuteczny sposób poleciłbyś zidentyfikować i zawiesić proces zawieszania, gdy system reaguje już bardzo wolno na polecenia użytkownika?

NES
źródło

Odpowiedzi:

32

Istnieją dwa podstawowe sposoby identyfikowania zawieszonych procesów. Jeden odbywa się za pośrednictwem interfejsu GUI Monitora systemu, a drugi topw wierszu polecenia.

Monitor systemu

Można to znaleźć w System> Administracja

konto

W tym artykule możesz także utworzyć skrót klawiaturowy .

Po uruchomieniu GUI możesz wybrać kartę Procesy, która zawiera listę wszystkich uruchomionych procesów. Sortuj według kolumny procesora, aby znaleźć zadanie najbardziej obciążające procesor

procesor

Na koniec możesz kliknąć to zadanie prawym przyciskiem myszy i wybrać zakończenie, zatrzymanie lub zabicie. Zabicie go natychmiast zatrzyma i usunie ten proces z systemu.

zabić

Wiersz poleceń

Jeśli masz otwarty terminal, możesz po prostu wpisać, topto wyświetli listę wszystkich uruchomionych procesów podobnych do tych na karcie Procesy w GUI

Top

W górnej części procesor jest domyślnie sortowany - więc najbardziej obciążające procesor zadania są na górze. W dowolnym momencie możesz nacisnąć literę, kaby zabić proces

k

Po prostu wpisz PID procesu, który chcesz zabić, i naciśnij enter. Poprosi o wysłanie sygnału Kill. Aby zabić proces, użyj domyślnie 15 - aby go zabić od razu „Nie przechodź, nie zbieraj 200 $” użyj 9.

sigkill

Proces zostanie następnie zakończony.

Jeśli masz powolny interfejs, możesz spróbować włączyć SSH zdalnie, jeśli jest włączony - lub przełączyć się do wirtualnej konsoli za pomocą Ctrl+ Alt+ F#Gdzie F#jest klawisz funkcyjny (F3, F4, F5 itp.). Aby powrócić do środowiska pulpitu, przełącz się na F7 lub F8 w zależności od wersji Ubuntu.

Marco Ceppi
źródło
5
Świetna odpowiedź. Zazwyczaj przypisuję skrót CTRL + ESC do Monitora systemu. To daje mi szybki dostęp do procesu zabijania.
Javier Rivera,
@Marco Ceppi: gdzie są zdjęcia?
enzotib
@enzotib Post został zaktualizowany
Marco Ceppi
1
+1 dla Monitora systemu. Może zabić / zatrzymać wiszący proces VLC, czego htop nie mógł zrobić.
malisokan
@malisokan Czy na pewno htopnie możesz tego zrobić? Możesz wysłać SIGKILL, aby zabił każdy wiszący proces, do którego masz prawa.
val mówi Przywróć Monikę
4

Dodaj System Monitoraplet do panelu ( kliknij panel prawym przyciskiem myszy , wybierz Add to Panneli wyszukaj Monitor systemu), a następnie kliknij go prawym przyciskiem myszy , aby otworzyć aplikację Monitor systemu.

Możesz uruchomić aplikację Monitor systemu, naciskając Alt+F2i uruchamiając program gnome-system-monitor.

Przejdź do zakładki „Procesy” i kliknij prawym przyciskiem myszy aplikację, którą chcesz zabić .

Raphael Bossek
źródło
3

Większość już powiedziała (podoba mi się odpowiedź Marco Ceppi), ale jest też aplet „Force Quit”, który możesz dodać do swojego panelu GNOME. Kliknij panel prawym przyciskiem myszy i wybierz „Dodaj do panelu ...”:

alternatywny tekst

Dzięki temu możesz wyjść z wiszącej aplikacji, po prostu klikając jej okno. Bardzo szybki i wydajny.


Podczas uruchamiania Unity w 11.04 oczywiście ta aplikacja nie będzie już dostępna. Istnieje projekt wymiany Indicator-Forceclose, ale nie jest zawarty w repozytoriach.

Alternatywnie możemy uruchomić xkillz terminala.

Takkat
źródło
Czy tylko niszczy okno, czy też zabija proces?
val mówi Przywróć Monikę
@val zabija proces, który utworzył okno.
Takkat
Właśnie przetestowane: nie ma. Zrobiłem program, który zawiesza się w wywołaniu zwrotnym GTK i zabiłem go za pomocą xkill. Okno zniknęło, ale program kontynuował działanie (lub zawiesił się, jeśli wolisz). Odpowiedź brzmi: nie, może nie zabić programu, jeśli jest poważnie zablokowany.
val mówi Przywróć Monikę
@val oczywiście po tym, jak Twój program wywołał inny proces tworzenia okna xkill, zabije tylko ten dodatkowy proces. Jest to szczególnie ważne, aby wiedzieć o programach, które działają bez serwera X, ale wywołują X w celu okienkowania. Oczywiście nie byłoby możliwe zabicie takiego programu z serwera X.
Takkat
Mój program nie wezwał do tego innego procesu. Zrobiłem program, który jest taki sam jak każda aplikacja GTK i zawiesiłem go. xkillnie wpływa na takie procesy (GTK spowoduje wyjście, jeśli później wyjdę z trybu „zawieszenia” i sprawię, że poradzi sobie z utratą okna). Połączenia zwrotne GTK nie mają nic wspólnego z przetwarzaniem wieloprocesowym.
val mówi Przywróć Monikę