Wiem, że jest ctrl+ c, ale czasami to nie działa. Na pulpicie Ubuntu mogę po prostu zamknąć okno terminala i otworzyć nowe, gdy tak się stanie, ale jak można to rozwiązać za pomocą interfejsu CLI na serwerze Ubuntu (bez ponownego uruchamiania pudełka)?
server
command-line
Zwariowany
źródło
źródło
Odpowiedzi:
CTRL+Cwyśle
SIGINT
do aplikacji. Aplikacja może skonfigurować moduł obsługi tego sygnału lub zignorować sygnał. Domyślnie nie maSIGINT
modułu obsługi i zabija aplikację.Możesz użyć, CTRL+\który wyśle
SIGQUIT
. Spowoduje to również wygenerowanie zrzutu rdzenia, jeśli limit rdzenia nie będzie wynosił zero.Możesz zawiesić proces i powrócić do powłoki za pomocą CTRL+Z, to zatrzyma wykonanie procesu i powróci do monitu powłoki. Proces będzie w pamięci i będzie dostępny jako zadanie w bieżącej powłoce. Następnie możesz użyć
kill -SIGNAL %%
lub,kill -SIGNAL %<job_ID>
aby wysłać sygnał do tego zadania. Np. Zabić ostatniego użycia pracykill -9 %%
Jeśli żaden z nich nie działa, zawsze możesz wysłać
SIGTERM
, w ostateczności,SIGKILL
co zakończy każdy proces. Sygnał ten, podobnie jak wszelkie inne sygnały, musi być wysyłany jako ten sam użytkownik co proces, który próbujesz zatrzymać lub jako root. Aby wysłaćSIGKILL
do procesu, najpierw znaleźć procesps aux
lubps -edf
, a następnie uruchomićkill -SIGKILL <process_ID>
, gdzie<process_ID>
jestPID
kolumna wps
wyjściu.Sygnałów nie można dostarczyć, jeśli proces odbywa się w trybie nieprzerwanego połączenia. Wywołania nieprzerwane to funkcje jądra, których nie można zatrzymać i zwykle występują z powodu złego sterownika (np. Sterownika, który nie jest ponownie wysyłany ). Procesu, który jest w nieprzerwanym trybie uśpienia, nie można zatrzymać, dopóki połączenie nie zostanie zakończone lub serwer nie zostanie ponownie uruchomiony.
Jeśli proces stanie się zombie , nie zużyje żadnych zasobów, zajmując tylko miejsce w tabeli procesów. Proces zombie nie może odbierać sygnałów.
Listę sygnałów dla bieżącej architektury można znaleźć za pomocą
kill -l
Zobacz strony człowiekiem
kill
,ps
ibash
. Aby zobaczyć stronę podręcznika, użyj czegoś takiego:man ps
źródło
Jeśli masz pełny dostęp do konsoli, możesz to zrobić Alt- F1..12i uzyskać nową konsolę.
Stamtąd możesz wykonać następującą listę procesów:
Następnie wykonaj
kill
identyfikator procesu:Jeśli nie masz pełnego dostępu do konsoli, po prostu otwórz inne okno terminala (być może za pośrednictwem PuTTY lub podobnego) i wykonaj powyższe kroki procesu i zabij.
źródło
Ctrl C wysyła SIGINT do uruchomionego procesu. Jeśli nie chcesz otwierać innej konsoli, możesz wysłać SIGQUIT za pomocą Ctrl \. Dotyczy to większości codziennych aplikacji, w których SIGINT nie.
Osobiście szukałem sposobu wysłania SIGKILL za pomocą skrótu, ale nie wiem, jak to zrobić.
źródło
Uważam
pgrep
i jestempkill
łatwiejszy w użyciu niżkill
z wyraźnym identyfikatorem procesu.Ponadto zamiast zaczynać od sygnału 9 (SIGKILL), rozważ rozpoczęcie od domyślnego SIGTERM (15). To da szansę procesowi z wdziękiem zakończyć (jeśli to możliwe).
pkill -15 thing
ipkill thing
powinien być równoważny.Oto jak to by działało. Powiedzmy, że ntpd jest zawieszony.
Jakie są procesy? (Możesz przejść do pkill, jeśli uważasz, że nie będziesz mieć fałszywych trafień).
Zabij procesy:
Użyj
pgrep
ponownie, aby sprawdzić, czy się udało.Jeśli nie, w końcu przejdź do
pkill -9
.źródło
Przełączasz się na nowy terminal, znajdź PID zablokowanego procesu (za pomocą
ps
), a następnie użyj,kill
aby zabić proces. Chciałbym najpierw użyćkill (PID)
. Jeśli to nie zadziała, skorzystałbymkill -9 (PID)
. Jeśli to nie zatrzyma procesu, należy ponownie uruchomić komputer.źródło
Cntrl+ \pracował dla mnie (gdzie Cntrl+ club znie działał)
źródło